android - LazyColumn 中的 TextField IME 填充,撰写

标签 android android-jetpack-compose

问题:TextField(惰性列内)文本位于键盘下方
解释:
我有一个 LazyColumn ,其中包含显示文本字段的项目列表,在 list 中, Activity 具有 windowSoftInputMode="adjustResize"我也在设置标志WindowCompat.setDecorFitsSystemWindows(window,false)在 setContent 之前的 onCreate 方法中,我想让文本始终出现在键盘上方,以获得更流畅的编辑体验!
使用提供 Window Insets 的伴奏库为 Box 提供填充,如下所示

Box(modifier = Modifier.weight(1f).navigationBarsWithImePadding()){
    LazyColumn() {
         items(myItems) { item->
              ItemComposable(item)
         }
    }
}
如您所见,框上有 navigationBarsWithImePadding,但由于文本位于键盘下方,因此它不起作用,我尝试在 LazyColumn 上设置修饰符,但随后它提供了 LazyColumn 相对于框外其他项目的填充!
所以我尝试了contentPadding
LazyColumn(contentPadding=insets.ime.toPaddingValues(additionalBottom=insets.navigationBars.bottom.dp)) {
    items(editor.blocks) { block ->
        RenderBlock(block)
    }
}
再次不起作用,因为内容填充应用于最后一项/或之后,键盘位于文本上方
将 LazyColumn 替换为简单的 Column 并使用 垂直滚动 修饰符导致同样的问题,因为列表可以长垂直滚动成为需要

最佳答案

如果使用 Column,可以引用以下代码 fragment :

Column(
    modifier = Modifier
        // other modifiers
        .verticalScroll(scrollState, reverseScrolling = true)
        .navigationBarsWithImePadding(),
    verticalArrangement = Arrangement.Bottom,
)

关于android - LazyColumn 中的 TextField IME 填充,撰写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67138999/

相关文章:

android - 服务不显示日志

android - 如何摆脱按钮和其他 View 之间的额外间隙?

android - 如何安全地从另一个进程可能正在使用的数据库中读取?

java - 单元测试基本授权

android - Jetpack Compose - 更改 viewModel 中的变量会导致 viewModel 状态发生更改吗?

android - 如何更改 Android Jetpack Compose 中的 OutlineTextField 边框宽度?

Android:从主屏幕小部件启动应用程序 Activity 的新实例

android - 列垂直SpaceBetween 不考虑

android - Jetpack 撰写文本字段 OnFocusChangeListener

android - Jetpack 撰写 : how to reset LazyListState?