1
KNOX 2017-01-19 00:09:27 +08:00
item 的 width 是 match_parent ?
|
4
AifeiI OP @KNOX 主要是第一个和第二个 ItemView 中的 EditText 是可以正常点击并获得焦点。另外有一个情况是,一个屏幕宽度最多是显示两个 ItemView ,所以当滑动屏幕显示出第三个 ItemView 时,点击第三个 ItemView 上的 EditText 就会让 RecyclerView 自动滚动到第一个 ItemView 的位置。
|
5
AifeiI OP @KNOX LinearLayoutManager.VERTICAL 的时候就不会出现这个情况,无论点击第几个 ItemView 都是正常的。我觉得有可能是 LinearLayoutManager.HORIZONTAL 的时候,弹出键盘时,让 RecyclerView 进行了重绘的情况
|
6
KNOX 2017-01-19 10:06:24 +08:00
LinearLayoutManager.VERTICAL 也可能在同时设置了 paddingTop 和 clipToPadding(false) 时获取焦点滑动到顶部。
|
8
AifeiI OP 从调试信息上看,触发的方法栈:
RecyclerView.ViewFlinger.run() [line:4645] LinearLayoutManager.scrollHorizontallyBy(...) ... RecyclerView.requestLayout() 是 RecyclerView.ViewFlinger 线程监听到, ScrollerCompat.computeScrollOffset() 返回了 true 。 |
9
AifeiI OP 终于解决,只要继承 LinearLayoutManager ,重写其中的 requestChildRectangleOnScreen 方法,默认返回 false 就 ok 了
|
10
xshengcn 2017-01-19 15:03:16 +08:00
没这么麻烦, 直接在 recyclerview 上加上
android:descendantFocusability="blocksDescendants" 就行 |