android - 以编程方式单击jetpack compose中的文本字段
问题描述
有没有办法以编程方式单击文本字段,所以当我的搜索屏幕弹出时,它会自动单击文本字段并弹出键盘。或者,有没有办法知道文本字段的触摸事件?
解决方案
有了1.0.x
您可以将焦点放在组件上。
就像是:
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 { }
}
推荐阅读
- html - 如何将活动类添加到映射到悬停反应的单个组件
- c++ - 错误:“message_source&”不是类、结构或联合类型(但是,message_source 是一个类)
- python - 基于列值的DataFrame排序
- python - 具有不同范围的任意嵌套 for 循环(python)
- android - 按钮的颤振可访问性工具提示
- c++ - 如何在 C++ 中为 Opencv VideoCapture 应用视频过滤器
- javascript - 如何多次运行 $(this).click() 而不会丢失先前的选择?
- c# - Sqlite 查询的正确语法
对于 xamarin.android - python - 连接两个字符串之间的公共字符
- javascript - 在 React 中使用 Props 的更好方法是什么?