问题描述
目前项目中发现某些页面在切换tab,或者下拉刷新的时候, 会发现自动滚动的情况, 经排查发现是RecyclerView 嵌套RecyclerView, 子RecyclerView获取到焦点, 导致列表会置顶或者回滚到最后一次离开页面的位置等情况.
解决方案
子 recyclerView 抢了焦点导致子 RecyclerView自动滚动,所以我在子recyclerView设置不需要焦点
- RecyclerView 嵌套RecyclerView
mRecyclerView.setFocusableInTouchMode(false); //设置不需要焦点
mRecyclerView.requestFocus(); //设置焦点不需要
ScrollView当中嵌套RecyclerView 也在某些场景下也会出现, 可以尝试下面这种解决方式进行排除
- ScrollView当中嵌套RecyclerView
让处于ScrollView或者RecyclerView 顶端的某个控件获得焦点即可
比如顶部的一个textview
tv_goodsName.setFocusableInTouchMode(true);
tv_goodsName.requestFocus();
至此, 项目中的多个页面出现自动滚动的问题得到解决, 希望这个方法能帮忙到大家, 也请各位大神有更好的解决方案给我留言, 不胜感激!