6

我正在制作一个 todoapp,当我编写 todo 时,我只放了 1 行,但是当我单击 Enter 时它会创建一个新行,有什么办法可以解决它吗?

@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

            )

        }
    }
4

3 回答 3

3

只需设置maxLines = 1并为我singleLine = true检测\n工作onValueChange

@Composable
fun SearchBar() {
            BasicTextField(
                textValue,
                onValueChange = {
                    if (!it.text.contains("\n"))
                        textValue = it
                },
                maxLines = 1,
                singleLine = true,
            )
}
于 2021-08-24T04:18:38.300 回答
0

从 Compose 1.0.0-alpha07 开始,您可以使用maxLines来限制文本字段的最大行数:

TextField(
    onValueChange = {  },
    maxLines = 1
)
于 2021-06-13T19:05:45.157 回答
0

在您的值更改回调中,您可以检查文本并过滤掉换行符。

onValueChange = {
    textState.value = /* filter invalid chars from it */
},
于 2021-06-13T17:22:50.907 回答