#android #android-jetpack-compose
Вопрос:
Я пытаюсь добавить счетчик символов внутри базового текстового поля (я не могу использовать текстовое поле. Это должно быть ниже Материального уровня). Я добавил базовый текст в декораторе, но теперь мне нужно обновлять его всякий раз, когда кто-то изменяет текст. Как мне получить текстовую строку из поля Внутренний текст и обновить свой базовый текст?
@Composable
fun MyTextField(
value: TextFieldValue,
onValueChange: (TextFieldValue) -> Unit,
modifier: Modifier = Modifier
){
val charCount = 0 // How do I update this in onValueChange?
BasicTextField(
value = value,
onValueChange = onValueChange,
modifier = modifier,
decorationBox = { innerTextField ->
Row(
Modifier
.padding(16.dp)
) {
BasicText(text = charCount.toString())
Spacer(Modifier.width(5.dp))
innerTextField()
}
})
}
Комментарии:
1. Без обиняков,
charCount
будьmutableStateOf { 0 }
что будет с тобойremember
. Затем укажитеonValueChange
параметр дляBasicTextField
вызова параметраonValueChange
функции и обновленияcharCount
на основе текущей длины текста.2. вам вообще не нужен счетчик, он всегда у вас есть
value.text.count()
, и он будет составлен заново только при обновлении текста
Ответ №1:
Вы можете просто использовать val charCount = value.text.count()
. Он всегда будет обновляться благодаря автоматической перестановке.