Android RecyclerView中item焦点乱跳问题(适用于PDA以及TV等带方向键的安卓设备)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zqd1984309864/article/details/78132909

项目中有许多列表,经常展示,分页等等,又加上设备本身就有方向键,需求就是尽量使用方向键操作程序,所以焦点的控制尤为重要,本篇文章讲解了,在列表分页后焦点消失的问题。


如何让View能够获取焦点?

首先系统提供的View中,像CheckBox,RadioButton,Button等是可以获取到焦点的,有方向键的可以试一下:


上图就是我用方向键移动焦点产生的效果,可以看到焦点在这些控件上的时候,周边背景会变成灰色,焦点在SeekBar上还可以使用方向键左右进行拖动。这些控件都是可以获取焦点的那么,像TextView以及ViewGroup怎么获取焦点,很简单,在XML文件中:

android:focusable="true"
设置可以获取焦点,我们来看一下效果。我们定义了一个TextView:

怎么感觉加完focusable=true还是获取不到焦点,其实获取到了,我们来为TextView写一个选择器验证一下结论:


这次终于可以非常直观的看到我们的TextView终于获取到焦点了。下面来说RecycleView中的item的焦点问题,首先这个问题就是,分页时焦点消失,按方向键UP再出现焦点,而且焦点出现的位置也不正确:


那么如何去解决这种问题,我的思路是这样,首先在数据源中添加是否被选中字段,在分页得到后刷新适配器之前,根据计算的得出当前应该获取焦点的item位置,设置数据源后,再刷新适配器,当然在适配器中调用requestFocus让指定的item获取焦点,这样就可以释放屏幕了:


这样既可实现焦点的控制,就算一直按住down键也不会出现问题。代码比较简单可以自行下载。

点击打开链接



猜你喜欢

转载自blog.csdn.net/zqd1984309864/article/details/78132909
今日推荐