标准调用流程
// 以下代码均在 @Composable 函数中
// 焦点请求器
val focusRequester = remember {
FocusRequester()
}
// 为需要获取焦点的TextField添加此Modifier
BasicTextField(
modifier = Modifier
.fillMaxWidth()
.focusRequester(focusRequester)
)
// 请求焦点
Button(onClick = {
focusRequester.requestFocus()
keyboard?.show()
})
如果使用 focusRequester.captureFocus() 则不会有任何效果
requestFocus
和captureFocus
的区别,就是多了一个 Captured 状态
captureFocus
一般用来保持焦点,且拒绝其他请求释放焦点
比如,有个需求:
用户填写手机号出现格式错误,必须让他填正确或者全删了才能跳到下一个输入的地方。
FocusRequester.kt
// 请求获取焦点,与原生安卓一致
::requestFocus()
// 请求释放焦点,与原生安卓一致
::freeFocus()
// 锁定焦点
::captureFocus()
网友评论