標(biāo)準(zhǔn)調(diào)用流程
// 以下代碼均在 @Composable 函數(shù)中
// 焦點請求器
val focusRequester = remember {
FocusRequester()
}
// 為需要獲取焦點的TextField添加此Modifier
BasicTextField(
modifier = Modifier
.fillMaxWidth()
.focusRequester(focusRequester)
)
// 請求焦點
Button(onClick = {
focusRequester.requestFocus()
keyboard?.show()
})
如果使用 focusRequester.captureFocus() 則不會有任何效果
requestFocus和captureFocus的區(qū)別,就是多了一個 Captured 狀態(tài)
captureFocus一般用來保持焦點,且拒絕其他請求釋放焦點
比如,有個需求:
用戶填寫手機號出現(xiàn)格式錯誤,必須讓他填正確或者全刪了才能跳到下一個輸入的地方。
FocusRequester.kt
// 請求獲取焦點,與原生安卓一致
::requestFocus()
// 請求釋放焦點,與原生安卓一致
::freeFocus()
// 鎖定焦點
::captureFocus()