Я использую Jetpack Compose и пытаюсь найти способ определить, открыта ли клавиатура.
Я пытался использовать приведенный ниже код, но получаю сообщение об ошибке Unresolved reference: ime
. Когда я нажимаю на рекомендуемый импорт (2, показанные ниже), эта ошибка все еще остается.
import android.view.WindowInsets
import android.view.WindowInsets.Type.ime
@Composable
fun signInView() {
val isVisible = WindowInsets.ime.getBottom(LocalDensity.current) > 0
}
Как я могу решить эту проблему?
Я получаю Unresolved reference: WindowInsets
, когда добавляю этот оператор импорта
Добавьте зависимости для необходимых вам артефактов в файл build.gradle для вашего приложения или модуля:
dependencies {
implementation "androidx.compose.foundation:foundation:1.3.1"
}
android {
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.3.2"
}
kotlinOptions {
jvmTarget = "1.8"
}
}
Пример:
@Composable
fun signInView() {
var isVisible by remember { mutableStateOf(false) }
val ime = androidx.compose.foundation.layout.WindowInsets.ime
val navbar = androidx.compose.foundation.layout.WindowInsets.navigationBars
var keyboardHeightDp by remember { mutableStateOf(0.dp) }
val localDensity = LocalDensity.current
LaunchedEffect(localDensity.density) {
snapshotFlow {
ime.getBottom(localDensity) - navbar.getBottom(localDensity)
}.collect {
val currentKeyboardHeightDp = (it / localDensity.density).dp
keyboardHeightDp = maxOf(currentKeyboardHeightDp, keyboardHeightDp)
isVisible = currentKeyboardHeightDp == keyboardHeightDp
}
}
}
Как насчет androidx.compose.foundation.layout.WindowInsets?