Я пробовал следовать руководствам, нескольким руководствам и просматривать другие здесь есть вопросы, но я не могу найти правильное решение, у каждого своя проблема, поэтому я явно что-то упускаю.
Что у меня сейчас включено:
- Добавлена настройка Resize в манифест.
Код: Выделить всё
- Добавлен setDecorFitsSystemWindows
Код: Выделить всё
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false
checkAppSettings() // Just checks some data store settings.
setContent {
val viewState = viewModel.viewState.collectAsStateWithLifecycle()
MyTheme(darkTheme = viewState.value.uiMode.isDarkTheme()) {
MainScreen()
}
}
}
- Добавлены imePadding() и systemBarsPadding() в мой основной Scaffold. Я также изменил видимость нижней панели, чтобы устранить проблему, когда нижняя панель располагалась рядом с содержимым.
Код: Выделить всё
@Composable
fun MainScreen() {
val navController = rememberNavController()
Scaffold(
modifier = Modifier
.fillMaxSize()
.imePadding()
.systemBarsPadding(),
bottomBar = {
if (!WindowInsets.isImeVisible) BottomNavigationBar(navController)
}
) { paddingValues ->
NavigationHost(
modifier = Modifier.padding(paddingValues),
navController = navController
)
}
}
Код: Выделить всё
\- MainScaffold \
\- MainNavHost \
\- SelectedBottomNavItemNavHost \
\- SelectBottomNavItemScaffold
Код: Выделить всё
Scaffold(
topBar = {
// This uses Material TopAppBar internally
CustomTopAppBar(
topAppBarVariation = TopAppBarVariation.Title(title = stringResource(id = label)),
showIcons = state.shouldDisplayEditFeedIcon(),
actions = {
Icon(
modifier = Modifier.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = ripple(bounded = false),
onClick = { navController.navigateTo(FeedNavigationItem.FeedEdit) }
),
painter = painterResource(R.drawable.ic_edit),
contentDescription = stringResource(id = R.string.edit)
)
}
)
}
) { paddingValues ->
Column(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues)
) {
// Page content goes here, now.
}
}
Истинную проблему можно увидеть в этих двух видеороликах, которыми я поделился ниже:
Не скрывать нижнюю панель
Добавьте проверку WindowInsets.isImeVisible на нижнюю панель
https://imgur.com/HkLysj7
https://imgur.com/SY3xhz6
В первом подходе мы ничего не скрываем. Нижняя панель прокручивается с помощью клавиатуры и выглядит нормально. Однако при прокрутке содержимого вверх возникает некоторое дрожание, если вы фокусируете текстовое представление в нижней части экрана. Если я выберу текстовый вид в верхней части экрана, проблем не возникнет.
При втором подходе мы скрываем нижнюю панель, но это приводит к появлению пустого пространства (иногда большего размера). изначально и дрожаще анимируется до меньшего размера). Я не уверен, связано ли это с кареткой, так как появляется квадрат, соответствующий пробелу, но у него нет имени или выбора в инспекторе макета, как можно увидеть здесь.Я не совсем уверен, как сформулировать вопрос, потому что я действительно в растерянности. Я хотел бы попросить здесь совета или совета, если кто-нибудь сталкивался с подобными проблемами при настройке
Большое спасибо!
Подробнее здесь: https://stackoverflow.com/questions/791 ... s-with-ime
Мобильная версия