我正在尝试在 RecyclerView 中创建具有可变数量的 EditText 元素的长表单。布局由 FrameLayout、表单部分的 RecyclerView 和 CardView 内的嵌套 RecyclerView 组成,用于保存该部分的所有表单元素(参见下面的动画)。
通常,当一个元素获得焦点时,键盘会出现,窗口会调整大小,并且 View 会滚动以使元素出现在键盘上方。我遇到的问题是,当在屏幕底部和部分顶部选择一个元素时,窗口会调整大小,并且 RecyclerView 会分离该部分的 View ,导致 EditText 在尝试聚焦时不存在。这表现为键盘突然打开,然后在焦点返回到 FrameLayout 时关闭。
我正在使用 android:windowSoftInputMode="adjustResize"
在我的 Activity 中,不想使用 adjustPan
因为它没有提供最好的用户体验。
我尝试向 EditText 添加一个单击监听器,然后向上滚动 RecyclerView 以便在调整窗口大小时 View 不会被破坏,但这感觉很糟糕,并且很难准确检测 RecyclerView 应该滚动多远。你也会得到一些奇怪的跳跃。为此,您必须关闭 EditText 的可聚焦性,这也不理想,因为它破坏了导航和可访问性。
尝试做类似 recyclerView.getRecycledViewPool().setMaxRecycledViews(0, SECTION_COUNT);
的事情也不起作用,因为它不会阻止 View 被分离。
当为键盘调整窗口大小以使 EditText 获得焦点时,如何防止 View 分离?
最佳答案
我解决了这个问题
android.os.Handler().postDelayed({recycle.smoothScrollToPosition(0)},100)
关于android - RecyclerView View 中的 EditText 在键盘打开时分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44338543/