Клавиатура Jetpack Compose перекрывает пользовательский интерфейс ModalBottomSheetAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Клавиатура Jetpack Compose перекрывает пользовательский интерфейс ModalBottomSheet

Сообщение Anonymous »

Я столкнулся с проблемой с Jetpack Compose и ModalBottomSheets:
На некоторых устройствах программная клавиатура перекрывает содержимое ModalBottomSheet. На Samsung Galaxy S24 Ultra с Android 14 и OneUI 6.1 и на Google Pixel 6a с Android 15 все работает как положено:
Скриншот Galaxy S24 Ultra

Скриншот Pixel 6a

Но на Samsung Galaxy A52s с Android 12 и OneUI 4.1 программная клавиатура перекрывает содержимое ModalBottomSheet:
Samsung A52s
После нескольких часов отладки, проб и ошибок я понятия не имею, в чем проблема.
Я использую компилятор Compose версии 2.0. .10 с Material3.
AppHost:
Scaffold(
modifier = Modifier.fillMaxSize()
) { padding ->
Box(
modifier = Modifier
.fillMaxSize(),
contentAlignment = Alignment.TopCenter
) {
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.BottomCenter
) {
DestinationsNavHost(
navGraph = NavGraphs.root,
engine = engine,
navController = navController,
defaultTransitions = DefaultEatDeTransitions,
modifier = Modifier
.fillMaxSize()
.consumeWindowInsets(padding)
.imePadding()
)

...
}
}
}

DefaultBottomSheet:
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun DefaultBottomSheet(
visible: Boolean,
onDismissRequest: () -> Unit,
sheetState: SheetState = rememberModalBottomSheetState(),
scrimColor: Color = Color.Black.copy(alpha = .6F),
content: @Composable ColumnScope.() -> Unit
) {
if (visible) {
ModalBottomSheet(
onDismissRequest = onDismissRequest,
sheetState = sheetState,
properties = ModalBottomSheetDefaults.properties(
shouldDismissOnBackPress = false
),
dragHandle = {
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
StatusBarSpacer(color = Color.Transparent)
DefaultDragHandle()
}
},
containerColor = MaterialTheme.colorScheme.background,
scrimColor = scrimColor,
shape = RoundedCornerShape(
topStart = 16.dp,
topEnd = 16.dp
),
windowInsets = WindowInsets(
bottom = 0
),
content = {
content.invoke(this)
NavigationBarSpacer()
}
)
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... omsheet-ui
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»