Vad*_*kov 5 android ime android-jetpack-compose samsung
我有一个带有文本字段的固定底部容器。我使用 imePadding 修饰符。当键盘出现时,imePadding 似乎会工作两次。它仅发生在某些设备上。特别是我的是三星 Galaxy A80 (Android 11)
代码示例
Scaffold(
modifier = Modifier.fillMaxSize(),
bottomBar = {
Box(
Modifier
.imePadding()
.height(100.dp)
.background(Color.Red),
) {
BasicTextField(
modifier = Modifier.fillMaxWidth(),
value = "some text",
onValueChange = {},
)
}
},
) {
Box(
Modifier.fillMaxSize().padding(bottom = it.calculateBottomPadding()),
) {
LazyColumn(
modifier = Modifier.fillMaxSize(),
) {
repeat((0..100).count()) {
item {
Box(Modifier.fillMaxWidth().height(100.dp).background(Color.Blue)) {
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我添加以下内容时, UPD问题会重现:
window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
Run Code Online (Sandbox Code Playgroud)
将此行添加到 AndroidManifest.xml 文件中的活动中android:windowSoftInputMode="adjustResize"。活动的布局将调整大小,以确保即使在不使用任何imePadding()修饰符的情况下显示软键盘时,其所有可见内容仍然可见。
在这里您可以看到改进的代码。
var value by remember { mutableStateOf("") }
Scaffold(
bottomBar = {
Box(modifier = Modifier
.fillMaxWidth()
.background(MaterialTheme.colorScheme.surface)) {
OutlinedTextField(
modifier = Modifier.fillMaxWidth(), value = value,
onValueChange = { value = it }
)
}
},
) { paddingValues ->
LazyColumn(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues),
contentPadding = PaddingValues(12.dp, 16.dp),
verticalArrangement = Arrangement.spacedBy(4.dp),
) {
items(100) {
Card(modifier = Modifier.fillMaxSize()) {
Text(text = "Item $it", modifier = Modifier.padding(8.dp))
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2716 次 |
| 最近记录: |