android 在编写中创建对话框显示不正确

nhaq1z21  于 2023-04-18  发布在  Android
关注(0)|答案(1)|浏览(109)

我有下面的Dialog,用户将输入电子邮件地址。如果电子邮件无效,它将在下面显示错误消息。但由于某种原因,当我显示错误消息时,它似乎切断了按钮。

我在对话框中有显示或隐藏错误消息的代码。

if(!isEmailVerifiedSuccess) {
    Text(
        modifier = Modifier.fillMaxWidth(),
        textAlign = TextAlign.Center,
        text = stringResource(R.string.email_verify_failed),
        fontWeight = FontWeight.Normal,
        fontSize = 16.sp,
        color = MaterialTheme.colorScheme.error
    )
}

看起来对话框没有腾出空间并按下按钮。但是,在预览中看起来很好。

fun AddVisitorDialog(
    email: String,
    isEmailVerifiedSuccess: Boolean,
    onEmailChanged: (email: String) -> Unit,
    onDialogClose: () -> Unit,
    isValidInput: Boolean,
    onAddButtonClicked: (email: String) -> Unit,
    modifier: Modifier = Modifier) {

    Dialog(onDismissRequest = { onDialogClose() }) {
        Column(
            modifier = modifier,
            horizontalAlignment = Alignment.CenterHorizontally
        ) {

            IconButton(
                modifier = Modifier.align(Alignment.End),
                onClick = {
                    onDialogClose()
                }) {
                Icon(
                    painter = painterResource(id = R.drawable.close),
                    contentDescription = "close button"
                )
            }

            Text(
                modifier = Modifier.fillMaxWidth(),
                textAlign = TextAlign.Center,
                text = stringResource(R.string.add_visitor),
                fontWeight = FontWeight.Bold,
                fontSize = 20.sp,
                color = MaterialTheme.colorScheme.agendaSubTitleHeaderColor
            )

            Spacer(modifier = Modifier.height(30.dp))

            UserInputTextField(
                modifier = Modifier.fillMaxWidth(),
                isInputValid = isValidInput,
                inputValue = email,
                placeholderText = stringResource(id = R.string.email_address),
                onInputChange = { newEmail ->
                    onEmailChanged(newEmail)
                }
            )

            if(!isEmailVerifiedSuccess) {
                Text(
                    modifier = Modifier.fillMaxWidth(),
                    textAlign = TextAlign.Center,
                    text = stringResource(R.string.email_verify_failed),
                    fontWeight = FontWeight.Normal,
                    fontSize = 16.sp,
                    color = MaterialTheme.colorScheme.error
                )
            }

            Spacer(modifier = Modifier.height(30.dp))

            TaskButton(
                modifier = Modifier.fillMaxWidth(),
                buttonText = stringResource(R.string.add),
                onButtonClick = {
                    onAddButtonClicked(email)
                }
            )
        }
    }
}
zrfyljdw

zrfyljdw1#

此时,您可以将在对话框中隐藏/显示错误消息的代码更改为

Text(
    modifier = Modifier.fillMaxWidth(),
    textAlign = TextAlign.Center,
    text = if(!isEmailVerifiedSuccess) stringResource(R.string.email_verify_failed) else "",
    fontWeight = FontWeight.Normal,
    fontSize = 16.sp,
    color = MaterialTheme.colorScheme.error
)

Text composable的值基于isEmailVerifiedSucess而改变。因为没有更多的高度问题。

相关问题