Программно щелкните текстовое поле в Jetpack Compose

Есть ли способ программно щелкнуть текстовое поле, чтобы, когда мой экран поиска всплывает, он автоматически щелкает текстовое поле, а также всплывает клавиатура. Или, может быть, есть способ узнать событие касания текстового поля?

1 ответ

Решение

С участием 1.0.0-beta04вы можете сосредоточить внимание на компоненте.
Что-то вроде:

      var text by remember { mutableStateOf(TextFieldValue("text")) }
val focusRequester = FocusRequester()
val keyboardController = LocalSoftwareKeyboardController.current

val interactionSource = remember { MutableInteractionSource() }
val isFocused by interactionSource.collectIsFocusedAsState()

Column {
    TextField(
        value = text,
        onValueChange = {
            text = it
        },
        interactionSource = interactionSource,
        label = { Text("label") },
        modifier = Modifier
            // add focusRequester modifier
            .focusRequester(focusRequester)
            .onFocusChanged {
                if (isFocused) {
                    keyboardController?.show()
                }
            }
    )
}

а потом:

      DisposableEffect(Unit) {
    focusRequester.requestFocus()
    onDispose { }
}
Другие вопросы по тегам