How to clear focus on TextField() when user close Keyboard in Jetpack Compose?
First you need to monitor the keyboard status:
// https://stackoverflow.com/questions/68847559/how-can-i-detect-keyboard-opening-and-closing-in-jetpack-compose
@Composable
fun keyboardAsState(): State<Boolean> {
val keyboardState = remember { mutableStateOf(false) }
val view = LocalView.current
val viewTreeObserver = view.viewTreeObserver
DisposableEffect(viewTreeObserver) {
val listener = ViewTreeObserver.OnGlobalLayoutListener {
keyboardState.value = ViewCompat.getRootWindowInsets(view)
?.isVisible(WindowInsetsCompat.Type.ime()) ?: true
}
viewTreeObserver.addOnGlobalLayoutListener(listener)
onDispose { viewTreeObserver.removeOnGlobalLayoutListener(listener) }
}
return keyboardState
}
Then you can remove focus, for example, from the entire composable screen at once using FocusManager.clearFocus:
// Clear focus if keyboard was hidden by user
val isKeyboardOpen by KeyboardUtil.keyboardAsState()
val focusManager = LocalFocusManager.current
if (!isKeyboardOpen) focusManager.clearFocus()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With