Jetpack Compose maxlines на textField не работает

Привет, ребята, я делаю todoapp, и когда я пишу todo, я ставлю только одну строку, но когда я нажимаю 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

            )

        }
    }

3 ответа

Просто установите maxLines = 1 а также singleLine = true, обнаружить \n на onValueChange работать на меня

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

Начиная с Compose 1.0.0-alpha07, вы можете использовать maxLines чтобы ограничить максимальное количество строк в текстовом поле:

      TextField(
    onValueChange = {  },
    maxLines = 1
)

В обратном вызове с измененным значением вы можете проверить текст и отфильтровать символ новой строки.

      onValueChange = {
    textState.value = /* filter invalid chars from it */
},
Другие вопросы по тегам