Android View位置跳动问题
-
有时我们会遇到当页面刷新后,类似NestedScrollView和RecyclerView这种可滑动View的滚动位置会变化一下,和原先不一致
-
通过调试我们发现,是因为页面里有RecyclerView这种可以获取焦点的View,跟踪代码得知,当这种View的一些flag属性变化时:如Visibility、focusable、enable等,会尝试去requestFocus(),此时外部可滚动View,得知其child获取了焦点,于是就尝试滚动到该child的位置(有时也滚动不到,因为计算offset出错),所以会造成位置的滚动
-
最简单的改动就是将RecyclerView的获取焦点功能去掉即可,但是这里也有个坑,RecyclerView在构造函数里面,会默认调用setFocusableInTouchMode(true),所以我们不能在xml中配置这些属性,需要在构造函数里面调用才行
-
其他滚动View的跳动情况,也可以参考一下这种情况
init { recyclerView = findViewById(R.id