Jetpack Compose中textField的maxlines不起作用

12

我正在制作一个待办事项应用,在输入待办事项时,我只想让它占用一行,但是当我按下回车键时,它会创建新的一行,有没有什么方法可以解决这个问题?

@Composable
fun TextFieldDemo() {
        Column(
            Modifier
                .padding(50.dp, 600.dp, 0.dp, 0.dp)
                .fillMaxHeight()) {
            val textState = remember { mutableStateOf(TextFieldValue()) }
            TextField(
                value = textState.value,
                onValueChange = { textState.value = it },
                label = {Text(text = "What you need Todo?")},
                singleLine = true //apenas uma linha de texto , podendo usar-se tambem singleLine = true

            )

        }
    }

你正在使用1.0.0-beta08吗? - Gabriele Mariotti
@GabrieleMariotti 是的,我是。 - Nunofernandes.official
3个回答

10

只需设置maxLines = 1singleLine = true,并且在onValueChange中检测\n即可。

@Composable
fun SearchBar() {
            BasicTextField(
                textValue,
                onValueChange = {
                    if (!it.text.contains("\n"))
                        textValue = it
                },
                maxLines = 1,
                singleLine = true,
            )
}

0
在您的值更改回调函数中,您可以检查文本并过滤掉换行符。
onValueChange = {
    textState.value = /* filter invalid chars from it */
},

但是我该如何过滤掉用户不能创建另一行的情况? - Nunofernandes.official

0
自Compose 1.0.0-alpha07起,您可以使用maxLines来限制文本字段的最大行数:
TextField(
    onValueChange = {  },
    maxLines = 1
)

3
我试过了,但还是不起作用。 - Nunofernandes.official

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接