Я пробовал все виды вставок, оконных вставок, потребляющих вставок (потому что я даже не совсем понимаю оконные вставки)... ничего не работает. Я пытался найти это, но у всех есть прямо противоположная проблема: они хотят, чтобы их нижняя панель приложений поднималась вверх с помощью клавиатуры; Я не хочу, я хочу, чтобы он оставался внизу, а клавиатура располагалась поверх него, Я ХОЧУ, чтобы клавиатура закрывала нижнюю панель приложений.
Недавно я добавил панель поиска на главном экране (настраиваемое текстовое поле, а не верхняя панель виджета создания поиска), и когда я нажимаю на нее, нижняя панель приложения поднимается вверх при появлении клавиатуры.
Для справки: компилируемый и целевой SDK — 34, минимум 26; все зависимости являются последними (стабильными выпусками) на сегодняшний день. От края до края НЕ включено, я не добавлял никаких кодов «безопасного рисования» или вставок к основному действию любого рода, а также не добавлял никаких кодировок WindowCompat.
Вот соответствующий код (за вычетом моих 500 различных попыток закрепить объект в нижней части экрана):
MainActivity (установить блок контента):
setContent {
val application = (application as CellarApplication)
CompositionLocalProvider(LocalCellarApplication provides application) {
TobaccoCellarTheme(preferencesRepo = application.preferencesRepo) {
Surface(
modifier = Modifier
.fillMaxSize(),
color = MaterialTheme.colorScheme.background,
) {
CellarApp()
}
}
}
}
Экран HomeScreen:
Scaffold(
modifier = modifier
.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
CellarTopAppBar(
title = stringResource(HomeDestination.titleRes),
scrollBehavior = scrollBehavior,
canNavigateBack = false,
navigateToCsvImport = navigateToCsvImport,
navigateToSettings = navigateToSettings,
showMenu = true,
exportCsvHandler = viewmodel,
)
},
bottomBar = {
CellarBottomAppBar(
modifier = Modifier,
navigateToStats = navigateToStats,
navigateToAddEntry = navigateToAddEntry,
currentDestination = HomeDestination,
filterViewModel = filterViewModel,
)
},
snackbarHost = {
SnackbarHost(
hostState = snackbarHostState,
modifier = Modifier
.padding(0.dp)
snackbar = { Snackbar(it) }
)
},
) { innerPadding ->
Column (
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Top,
modifier = Modifier
.fillMaxSize()
.padding(top = 64.dp, bottom = 52.dp, start = 0.dp, end = 0.dp)
) {
// rest of code calling screen content top level composables
Компонуемая нижняя панель приложения (определена в другом файле, где определены верхняя панель приложения и компонуемый контейнер приложения):
@Composable
fun CellarBottomAppBar(
currentDestination: NavigationDestination?,
modifier: Modifier = Modifier,
navigateToHome: () -> Unit = {},
navigateToStats: () -> Unit = {},
navigateToAddEntry: () -> Unit = {},
filterViewModel: FilterViewModel,
) {
BottomAppBar(
modifier = modifier
.fillMaxWidth()
.height(52.dp)
.padding(0.dp),
containerColor = primaryLight,
contentColor = LocalCustomColors.current.navIcon,
contentPadding = PaddingValues(0.dp),
) {
Row(
// rest of the bottom app bar code
Подробнее здесь: https://stackoverflow.com/questions/790 ... mappbar-up
Как запретить программной клавиатуре поднимать пользовательский BottomAppBar? ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение