我在 Jetpack Compose 中有一个布局,其中有几个需要保持在屏幕顶部的可组合项(文本视图和输入),然后是我需要保持连接到底部的另一个可组合项(按钮)屏幕。当打开键盘输入文本输入时,我需要连接到屏幕底部的按钮来向上移动,但这并没有发生。
ProvideWindowInsets(windowInsetsAnimationsEnabled = true) {
Column(
verticalArrangement = Arrangement.SpaceBetween,
modifier = Modifier
.fillMaxSize()
.statusBarsPadding()
.padding(0.dp, 32.dp, 0.dp, 0.dp)
.navigationBarsWithImePadding()
.verticalScroll(rememberScrollState()),
) {
Column {
CustomHeading6(
modifier = Modifier.padding(0.dp, 0.dp, 0.dp, 32.dp),
title = "Enter Email"
)
CustomBody1(
modifier = Modifier.padding(0.dp, 0.dp, 0.dp, 12.dp),
content = "Email:"
)
CustomEmailTextField(
modifier = Modifier.padding(0.dp, 0.dp, 0.dp, 20.dp),
text = viewModel.emailAddress,
onValueChanged = { //removed }
)
}
Column {
CustomButton(
modifier = Modifier.padding(0.dp, 32.dp),
title = "Submit",
onButtonClick = { //removed }
)
}
}
}
我试图通过将每组项目包装在它们自己的列中,然后在包装列上使用 Arrangement.SpaceBetween 来实现对顶部/底部的附加,但这可能不正确。我也尝试不这样做,而是将 .weight(1f) 添加到列中,并在顶部附加可组合项。这些都不允许布局随键盘向上移动。
我在主要活动中也有这个:
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {
ProvideWindowInsets {
Theme {
// my content
}
}
}
这在我的活动清单中:
android:windowSoftInputMode="adjustResize"