Erik Ziegler
10/17/2024, 1:51 PM// common
@Composable
expect fun isKeyboardVisible(): Boolean
// android
@Composable
actual fun isKeyboardVisible(): Boolean {
var isKeyboardOpen by remember { mutableStateOf(false) }
val view = LocalView.current
val viewTreeObserver = view.viewTreeObserver
DisposableEffect(viewTreeObserver) {
val onGlobalListener = ViewTreeObserver.OnGlobalLayoutListener {
val rect = android.graphics.Rect()
view.getWindowVisibleDisplayFrame(rect)
val screenHeight = view.rootView.height
val keypadHeight = screenHeight - rect.bottom
isKeyboardOpen = keypadHeight > screenHeight * 0.15
}
viewTreeObserver.addOnGlobalLayoutListener(onGlobalListener)
onDispose {
viewTreeObserver.removeOnGlobalLayoutListener(onGlobalListener)
}
}
return isKeyboardOpen
}
// ios
@Composable
actual fun isKeyboardVisible(): Boolean = WindowInsets.Companion.ime.getBottom(LocalDensity.current) > 0
Hristijan
10/17/2024, 1:55 PMErik Ziegler
10/17/2024, 1:56 PMHristijan
10/17/2024, 2:05 PMErik Ziegler
10/17/2024, 2:07 PMHristijan
10/17/2024, 2:20 PMErik Ziegler
10/17/2024, 2:42 PMErik Ziegler
10/17/2024, 2:43 PMHristijan
10/17/2024, 2:53 PMZach Klippenstein (he/him) [MOD]
10/17/2024, 3:48 PMErik Ziegler
10/17/2024, 4:12 PM