小编rew*_*oes的帖子

在 Jetpack Compose 中的 Scaffold 底部栏上显示键盘并应用适当的插入填充

Scaffold在主屏幕上使用了一个bottomBar在应用程序的每个屏幕中都可见的固定屏幕,并且我将 的 应用于innerPaddingScaffold内容。

我希望键盘出现在 之上bottomBar,为此我将imePadding()only应用于Scaffold应用于的内容。

但是,当键盘打开时,ScaffoldinnerPadingimePadding()都会应用于内容填充。

我尝试过伴奏插入迁移,但并不幸运。

无论如何,我可以阻止它并仅应用其中之一吗?

这是我的一段代码:

Scaffold(
    topBar = { },
    bottomBar = { },
    modifier = Modifier
        .systemBarsPadding()
) { innerPadding ->
    Content(
        modifier = Modifier
            .padding(innerPadding)
            .imePadding()
    )
}
Run Code Online (Sandbox Code Playgroud)

这是结果:

在此输入图像描述

对于现在已弃用的伴奏插图,我使用了以下解决方案:

val isImeVisible = LocalWindowInsets.current.ime.isVisible
val contentPadding = remember(isImeVisible) {
    if (isImeVisible) PaddingValues(top = innerPadding.calculateTopPadding()) else innerPadding
}
Run Code Online (Sandbox Code Playgroud)

windowinsets android-jetpack-compose jetpack-compose-accompanist

8
推荐指数
1
解决办法
5144
查看次数