Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to clear focus on keyboard close in Jetpack Compose?

How to clear focus on TextField() when user close Keyboard in Jetpack Compose?

like image 657
TriangleN Avatar asked Oct 15 '25 13:10

TriangleN


1 Answers

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()
like image 161
Mikhail Avatar answered Oct 18 '25 11:10

Mikhail



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!