gpt4 book ai didi

android撰写文本字段如何在触摸外部时关闭键盘

转载 作者:行者123 更新时间:2023-12-04 23:40:12 28 4
gpt4 key购买 nike

这是在全屏列中包含 TextField 的 Row。 onFocusChanged当点击 TextField(进入 Activity 状态)和按下键盘上的 Done 按钮时调用回调。但是处理程序没有被调用,我在 TextField 之外点击。所以我无法关闭键盘。任何想法?

val (nameText, setNameText) = remember { mutableStateOf("")}
val keyboardController = LocalSoftwareKeyboardController.current
val focusRequester = FocusRequester()

Column(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight()
.padding(10.dp)
) {
Row(
modifier = Modifier
.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceAround
) {
TextField(
value = nameText,
onValueChange = setNameText,
modifier = Modifier
.focusRequester(focusRequester)
.onFocusChanged {
if (!it.isFocused) {
keyboardController?.hide()
}
}
.padding(horizontal = 0.dp, vertical = 0.dp)
.height(50.dp)
.fillMaxWidth(),
KeyboardOptions(
keyboardType = KeyboardType.Text,
imeAction = androidx.compose.ui.text.input.ImeAction.Done
),
keyboardActions = KeyboardActions(onDone = {
localFocusManager.clearFocus()
}),
placeholder = { Text("Enter a name", fontSize = 14.sp) }
)
}
}
我尝试在 Column 中设置焦点处理程序但没有工作(在外部点击时未调用焦点处理程序)。使用撰写版本 1.0.2。

最佳答案

如果你想移除对点击的关注,你可以添加pointerInput带有 detectTapGestures 的修饰符给您的Column :

Column(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight()
.padding(10.dp)
.pointerInput(Unit) {
detectTapGestures(onTap = {
localFocusManager.clearFocus()
})
}
)
我在 padding 之后添加它修饰符,因此填充 View 部分不会收到触摸。如果您更改顺序,填充将包含在可点击部分中。
other gestures如果水龙头对您来说还不够。

关于android撰写文本字段如何在触摸外部时关闭键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69139853/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com