如何避免键盘打开时 Jetpack Compose 内容上升

问题描述 投票:0回答:2

如上所示,当用户打开键盘时,项目列表、文本输入字段和添加按钮会上升, 我希望项目列表保持原位,同时文本输入字段和添加按钮按原样上升。

代码:

活动:

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        OlegarioLopezTheme {
            Surface(
                modifier = Modifier.fillMaxSize(),
                color = MaterialTheme.colors.background
            ) { Navigation() }
        }
    }
}

Navigation() 函数只是调用 Composable

可组合:

    @Composable
fun ListScreen(
    viewModel: MainScreenViewModel,
    navController: NavController
) {
    LazyColumn{...}
MainTextField(viewModel)
    AddButton(viewModel)
}
android kotlin android-jetpack-compose viewmodel android-softkeyboard
2个回答
4
投票

确保活动的

windowSoftInputMode
设置为
adjustResize

<activity
      android:name=".MyActivity"
      android:windowSoftInputMode="adjustResize">
</activity>

以这种方式,活动的主窗口总是会调整大小,以便为屏幕上的软键盘腾出空间。

然后只需使用布局作为:

Column() {
    LazyColumn(Modifier.weight(1f)) {
      //..
    }
    Row(){
        TextField()
        Button()
    }
}

1
投票

这正是我的问题,只是在活动从暂停返回后才成为问题。

一个全新的状态没有问题,但是当突然恢复时,我的整个主要活动都被键盘推高了。超级奇怪的行为。

我实际上将 windowSoftInputMode 设置为“

adjustPan
”abd 它现在按预期工作,这就是它作为一项新活动的工作方式。

© www.soinside.com 2019 - 2024. All rights reserved.