Rai*_*ker 4 android kotlin android-jetpack-compose
我有一个可组合函数TextField:
val focusManager = LocalFocusManager.current
TextField(
keyboardOptions = KeyboardOptions.Default.copy(
imeAction = ImeAction.Search,
),
keyboardActions = KeyboardActions(
onSearch = {
focusManager.clearFocus()
}
)
)
Run Code Online (Sandbox Code Playgroud)
当我单击不属于可组合内容的其他按钮时,我需要从可组合函数内部以及外部显示键盘。基本上我想从我的片段中调用hideKeyboard()。
我尝试在可组合项中使用 livedata:
val shouldShowKeyBoard by shouldShowSearchKeyBoard.observeAsState()
Run Code Online (Sandbox Code Playgroud)
我可以focusManager.clearFocus()隐藏键盘,但我不确定如何以编程方式显示特定的组合TextField
管理隐藏/显示键盘的“撰写”方式是什么?
Gab*_*tti 17
您可以对状态更改执行一些操作,并且可以使用副作用来完成此操作。
例如,您可以使用该LaunchedEffect函数,作为 akey您可以传递您想要侦听的状态。
LaunchedEffect(booleanValue) {
//...do something
}
Run Code Online (Sandbox Code Playgroud)
您可以使用 ViewModel 来设置布尔值,例如:
// initialize focus reference to be able to request focus programmatically
val focusRequester = remember { FocusRequester() }
LaunchedEffect(viewModel.showKeyboard) {
focusRequester.requestFocus()
}
TextField(
value = text,
onValueChange = {
text = it },
modifier = Modifier
// add focusRequester modifier
.focusRequester(focusRequester)
)
Run Code Online (Sandbox Code Playgroud)
请注意:要隐藏键盘,您还可以使用:
val keyboardController = LocalSoftwareKeyboardController.current
TextField(
//...
keyboardActions = KeyboardActions(
onSearch = { keyboardController?.hide() }
)
Run Code Online (Sandbox Code Playgroud)
使用该方法focusManager.clearFocus()关闭键盘并清除焦点。
| 归档时间: |
|
| 查看次数: |
10449 次 |
| 最近记录: |