相关疑难解决方法(0)

LazyColumn 中的 TextField IME 填充,撰写

问题: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修饰符会导致同样的问题,因为列表可以长垂直滚动成为需要

android android-jetpack-compose

6
推荐指数
1
解决办法
244
查看次数

标签 统计

android ×1

android-jetpack-compose ×1