由于 TextField被点击时会获取焦点,导致手机回退键需要点击两次才能退回到上个页面,所以在键盘隐藏的时候清除焦点
//键盘不可见时清除焦点
@Composable
fun KeyboardForClearFocus(window: Window){
//键盘不可见时清除焦点
val focusManager = LocalFocusManager.current
val isKeyboardOpen by keyboardAsState()
WindowCompat.setDecorFitsSystemWindows(window, false)
if (!isKeyboardOpen) {
DisposableEffect(Unit) {
focusManager.clearFocus()
onDispose {}
}
}
}
//键盘不可见时清除焦点
@Composable
fun keyboardAsState(): State<Boolean> {
val isImeVisible =
WindowInsets.ime.getBottom(LocalDensity.current) > 0
return rememberUpdatedState(isImeVisible)
}
点击空白处隐藏键盘,参考文档:compose 点击空白区域取消软键盘_compose 点击空白处 输入法消失-CSDN博客
@Composable
fun Modifier.autoCloseKeyboard(): Modifier = composed {
//LocalSoftwareKeyboardController 这个是compose 组件,必须在compose 函数内才能使用
val keyboardController = LocalSoftwareKeyboardController.current
pointerInput(this) {
detectTapGestures(
onPress = {
keyboardController?.hide()
}
)
}
}
//使用的时候设置在外层
Column (verticalArrangement= Arrangement.Center , modifier = Modifier.autoCloseKeyboard()){
//UI
}