Textfield с Animatedvisibility должна показывать клавиатуру (requestFocus)Android

Форум для тех, кто программирует под Android
Anonymous
Textfield с Animatedvisibility должна показывать клавиатуру (requestFocus)

Сообщение Anonymous »

У меня есть текстовое поле, которое отображается, когда пользователь нажимает на кнопку поиска, и видимость анимирована. Проблема заключается в том, что когда я прошу фокус, чтобы показать клавиатуру, композиция не закончена, поэтому FocusRequester не была инициализирована, вызывая сбой. Одним из возможных решений было бы добавить задержку с той же продолжительностью, что и анимация; Однако это небезопасно, так как это может привести к гоночному состоянию, и авария может произойти в редких случаях. Любая другая альтернатива? < /P>

Код: Выделить всё

@Composable
fun MyComponent() {
var expanded by rememberSaveable { mutableStateOf(false) }
val focusRequester = remember { FocusRequester() }

AnimatedVisibility(
visible = expanded,
enter = expandHorizontally(animationSpec = tween(300)) + fadeIn(),
exit = shrinkHorizontally(animationSpec = tween(300)) + fadeOut()
) {
TextField(
modifier = Modifier.focusRequester(focusRequester),
...)

}

IconButton(onClick = {
expanded = !expanded
focusRequester.requestFocus()
}) {
MyImage(
icon = R.drawable.ic_search,
modifier = Modifier.size(56.dp)
)
}

}
< /code>
java.lang.IllegalStateException:

FocusRequester не инициализируется. Вот некоторые возможные исправления:
  • Помните, что FocusRequester: val FocusRequester = помнить {FocusRequest ()}
  • Вы забыли добавить модификатор.focusrequester () ?
  • rekempting? Запросы на фокусировку должны быть сделаны в ответ на какое -то событие. Например, Modifier.clickable {FocusRequester.RequestFocus ()}


Подробнее здесь: https://stackoverflow.com/questions/797 ... questfocus

Вернуться в «Android»