提问者:小点点

以编程方式单击jetpack compose中的textfield


有没有一种方法以编程方式点击文本字段,这样当我的搜索屏幕弹出时,它会自动点击文本字段,同时弹出键盘。或者也许,有没有一种方法可以知道TextField的touch事件?


共1个答案

匿名用户

您可以将焦点赋予组件。
类似于:

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?.showSoftwareKeyboard()
                }
            }
    )
}

后来呢:

DisposableEffect(Unit) {
    focusRequester.requestFocus()
    onDispose { }
}