Я столкнулся с проблемой с 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
Клавиатура Jetpack Compose перекрывает пользовательский интерфейс ModalBottomSheet ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Панель Jetpack Compose TextToolbar не отображается для TextField в ModalBottomSheet
Anonymous » » в форуме Android - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-