1. 概述
有时候在我们开发过程中,在使用 RecyclerView加载多种类型布局的时候,比如有:搜索框、BannerView、GridView、TabLayout、列表数据、固定的文字布局,可能会出现 RecyclerView抢先获取焦点问题,刚打开界面时直接显示 RecyclerView的列表数据,而不是正常的先显示 最上边的搜索框、BannerView、GridView、TabLayout等。
如下图所示:第一张是正常显示的,但是有时候刚进入界面时会直接显示最下边的列表数据,而把列表上边的布局直接顶上去了,这个就是 rv抢先获取焦点问题;
第一张:
第二张:
对于这种问题解决方案很简单,只需要在 rv 加载多种布局的 第一个布局的根布局中添加
android:focusable="true"
android:focusableInTouchMode="true"
添加这两个属性就可以。
我项目中的第一个item是 BannerView,就直接在 BannerView的根布局中添加这两个属性就可以。