ngl*_*ber 19 android android-input-method kotlin android-jetpack-compose android-compose-textfield
我正在使用 Jetpack Compose TextField
,我想在用户按下操作按钮(imeActionPerformed
参数)时关闭虚拟键盘。
val text = +state { "" }
TextField(
value = text.value,
keyboardType = KeyboardType.Text,
imeAction = ImeAction.Done,
onImeActionPerformed = {
// TODO Close the virtual keyboard here <<<
}
onValueChange = { s -> text.value = s }
)
Run Code Online (Sandbox Code Playgroud)
Gab*_*tti 42
有了1.0.x
你可以使用LocalSoftwareKeyboardController
类来控制电流软键盘,然后使用hide
方法:
var text by remember { mutableStateOf(TextFieldValue("Text")) }
val keyboardController = LocalSoftwareKeyboardController.current
TextField(
value = text,
onValueChange = {
text = it
},
label = { Text("Label") },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = {keyboardController?.hide()})
)
Run Code Online (Sandbox Code Playgroud)
azi*_*ian 29
从 compose 开始1.0.0-alpha12
(并且在 compose 中仍然有效1.0.1
)onImeActionPerformed
已弃用,建议的方法是keyboardActions
与以下组合一起使用keyboardOptions
:
val focusManager = LocalFocusManager.current
OutlinedTextField(
value = ...,
onValueChange = ...,
label = ...,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }),
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done, keyboardType = KeyboardType.Password),
)
Run Code Online (Sandbox Code Playgroud)
focusManager.clearFocus()
将负责关闭软键盘。
Has*_*san 11
要添加Gabriele Mariotti 的解决方案,如果您想有条件地隐藏键盘,例如单击按钮后,请使用以下命令:
keyboardController?.hide()
Run Code Online (Sandbox Code Playgroud)
例如,单击“添加”按钮后隐藏键盘:
var newWord by remember { mutableStateOf("") }
val keyboardController = LocalSoftwareKeyboardController.current
// Setup the text field with keyboard as provided by Gabriele Mariotti
...
Button(
modifier = Modifier
.height(56.dp),
onClick = {
if (!newWord.trim().isNullOrEmpty()) {
wordViewModel.onAddWord(newWord.trim())
newWord = ""
keyboardController?.hide()
}
...
Run Code Online (Sandbox Code Playgroud)
在1.0.0
您可以使用SoftwareKeyboardController
或FocusManager
来做到这一点。
这个答案侧重于它们的差异。
var text by remember { mutableStateOf("")}
TextField(
value = text,
onValueChange = { text = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = { /* TODO */ }),
)
Run Code Online (Sandbox Code Playgroud)
根据@Gabriele Mariottis
答案。
val keyboardController = LocalSoftwareKeyboardController.current
// TODO =
keyboardController?.hide()
Run Code Online (Sandbox Code Playgroud)
这仅关闭键盘,但不清除的重点从任何集中文本字段(注意光标和粗底线)。
根据@azizbekians
答案。
val focusManager = LocalFocusManager.current
// TODO =
focusManager.clearFocus()
Run Code Online (Sandbox Code Playgroud)
这将关闭键盘并清除 TextField 的焦点。
归档时间: |
|
查看次数: |
5424 次 |
最近记录: |