Waq*_*hir 6 android android-jetpack-compose
问题:TextField(在惰性列内)文本位于键盘下方
解释 :
我有一个 LazyColumn,其中包含显示文本字段的项目列表,在清单中活动有windowSoftInputMode="adjustResize",我还在WindowCompat.setDecorFitsSystemWindows(window,false)setContent 之前的 onCreate 方法中设置标志 ,我想让文本始终出现在键盘上方以获得更流畅的编辑体验!
使用提供 Window Insets 的 Accompanist Library 为 Box 提供填充,如下所示
Box(modifier = Modifier.weight(1f).navigationBarsWithImePadding()){
LazyColumn() {
items(myItems) { item->
ItemComposable(item)
}
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,盒子上有 navigationBarsWithImePadding,但它不起作用,因为文本位于键盘下方,我尝试在 LazyColumn 上设置修饰符,但随后它提供了 LazyColumn 相对于框外其他项目的填充!
所以我试过了 contentPadding
LazyColumn(contentPadding=insets.ime.toPaddingValues(additionalBottom=insets.navigationBars.bottom.dp)) {
items(editor.blocks) { block ->
RenderBlock(block)
}
}
Run Code Online (Sandbox Code Playgroud)
再次不起作用,因为内容填充应用于最后一项/或其后,键盘位于文本上方
用简单的 Column 替换 LazyColumn 并使用verticalScroll修饰符会导致同样的问题,因为列表可以长垂直滚动成为需要
如果您使用Column,可以参考以下代码片段:
Column(
modifier = Modifier
// other modifiers
.verticalScroll(scrollState, reverseScrolling = true)
.navigationBarsWithImePadding(),
verticalArrangement = Arrangement.Bottom,
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |