我正在尝试在RecyclerView中创建一个包含可变数量的EditText元素的长格式。布局包括FrameLayout,表单部分的RecyclerView,然后是CardView内部的嵌套RecyclerView,用于保存该部分的所有表单元素(请参阅下面的动画)。
通常,当一个元素被聚焦时,键盘将出现,窗口被调整大小,并且视图被滚动,因此元素出现在键盘上方。我遇到的问题是当在屏幕底部选择一个元素并且一个部分的顶部调整窗口大小并且RecyclerView分离该部分的视图时,导致EditText在尝试聚焦时不存在。 / em>这表现为键盘弹出暂时然后关闭,因为焦点返回到FrameLayout。
我在我的活动中使用android:windowSoftInputMode="adjustResize"
并且不想使用adjustPan
,因为它无法提供最佳用户体验。
我已经尝试向EditText添加一个点击监听器,然后向上滚动RecyclerView,以便在窗口调整大小时视图不会被破坏,但是这感觉很难看,并且很难准确地检测到RecyclerView应该在多大程度上滚动。你也会得到一些奇怪的跳跃。为了做到这一点,你必须关闭EditText的可聚焦性,这不是理想的,因为它会破坏导航和可访问性。
尝试执行recyclerView.getRecycledViewPool().setMaxRecycledViews(0, SECTION_COUNT);
之类的操作无效,因为它不会阻止视图分离。
如何在为键盘调整窗口大小时保持视图不被分离,以便EditText获得焦点?
答案 0 :(得分:1)
我用
解决了这个问题android.os.Handler().postDelayed({recycle.smoothScrollToPosition(0)},100)