kotlin 如何避免jetpack编写器内容在键盘打开时上升

c0vxltue  于 2023-01-26  发布在  Kotlin
关注(0)|答案(2)|浏览(176)

如上所示,当用户打开键盘时,项目列表、文本输入字段和添加按钮会向上移动,我希望项目列表保持原位,而文本输入字段和添加按钮也会向上移动。
代码:
活动:

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

Navigation()函数只调用可组合的
可组合:

@Composable
fun ListScreen(
    viewModel: MainScreenViewModel,
    navController: NavController
) {
    LazyColumn{...}
MainTextField(viewModel)
    AddButton(viewModel)
}
bvk5enib

bvk5enib1#

确保将活动的windowSoftInputMode设置为adjustResize

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

这样,Activity的主窗口始终会调整大小,以便为屏幕上的软键盘腾出空间。
然后只需使用布局如下:

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

eblbsuwk2#

这正是我的问题与一个额外的扭曲,它只成为一个问题后,活动从暂停返回。
一个全新的状态没有问题,但当突然恢复时,我的整个主要活动都被键盘推了起来。超级奇怪的行为。
我实际上将windowSoftInputMode设置为“adjustPan”,现在它按预期工作,这就是它作为一个新活动的工作方式。

相关问题