RecyclerView视图中的EditText在打开键盘时被分离

问题描述 投票:3回答:1

我正在尝试在RecyclerView中创建具有可变数量的EditText元素的长格式。该布局由一个FrameLayout,一个用于表单部分的RecyclerView,然后在CardView内部的嵌套RecyclerView组成,以容纳该部分的所有表单元素(请参见下面的动画)。

通常,当一个元素被聚焦时,键盘会出现,窗口会被调整大小,并且视图会滚动,因此元素会出现在键盘上方。我遇到的问题是当在屏幕底部和节的顶部选择一个元素时,将调整窗口的大小,并且RecyclerView会分离节的视图,从而导致在试图聚焦时EditText不存在。这表现为键盘突然弹出打开,然后在焦点返回到FrameLayout时关闭。

RecyclerView Focus Issue

我在活动中使用android:windowSoftInputMode="adjustResize",并且不希望使用adjustPan,因为它不能提供最佳的用户体验。

我曾尝试在EditText中添加一个单击侦听器,然后向上滚动RecyclerView,以使在调整窗口大小时视图不会被破坏,但是这感觉很棘手,很难准确地检测出应该将RecyclerView滚动多远。您还会得到一些怪异的跳跃。为此,您必须关闭EditText的可聚焦性,这也不理想,因为它会破坏导航和可访问性。

[尝试执行类似recyclerView.getRecycledViewPool().setMaxRecycledViews(0, SECTION_COUNT);的操作也不起作用,因为它不会阻止视图分离。

调整窗口大小以适应键盘时,如何防止视图分离,以便EditText获得焦点?

android android-edittext android-recyclerview
1个回答
0
投票

我用by解决这个问题

android.os.Handler().postDelayed({recycle.smoothScrollToPosition(0)},100)
© www.soinside.com 2019 - 2024. All rights reserved.