假设我有一些关于jetpack撰写内容的活动
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ScrollableColumn(
modifier = Modifier
.fillMaxSize()
.border(4.dp, Color.Red)
) {
val (text, setText) = remember { mutableStateOf("") }
TextField(
value = text,
onValueChange = setText,
label = {},
modifier = Modifier
.fillMaxWidth()
)
for (i in 0..100) {
Text("Item #$i")
}
}
}
}
}
如果我要启动此活动并专注于TextField,则会弹出一个软件键盘。
但是,该接口不会对此作出反应。 ScrollableColumn的底部边框(.border(4.dp, Color.Red)
)和第100个项目(Text("Item #$i")
)都不可见。
换句话说,软件键盘会覆盖内容。
我如何使jetpack组成可见区域的变化(由于软件键盘)?
答案 0 :(得分:4)
您可以使用标准的android过程,但我不知道是否存在Compose特定方式。
如果将SoftInputMode设置为SOFT_INPUT_ADJUST_RESIZE
,则在更改键盘后布局将重新调整大小。
class YourActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
setContent { /* Composable Content */ }
}
}
否则,您可以在清单中使用这些标志。浏览此处获取更多信息: Move layouts up when soft keyboard is shown?