android tv recycview,Android TV端RecyclerView焦点乱跑
最近在做TV端的项目着实一脚一个坑,焦点问题是解决TV端开发的关键本篇文章解决当用RecyclerView展示数据,浏览到最后一个item时焦点乱跑的问题直接上代码了@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN)
最近在做TV端的项目着实一脚一个坑,焦点问题是解决TV端开发的关键
本篇文章解决当用RecyclerView展示数据,浏览到最后一个item时焦点乱跑的问题
直接上代码了
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN) {
//判断RecyclerView是否得到焦点
if (mRecyclerView.hasFocus()) {
if (mList.size() > 0) {
//得到item的数量
int i = mList.size() - 1;
//抛出控制值是因为 findViewByPosition方法判断的是还未加载到的item
try {
if (mManager.findViewByPosition(i).hasFocus()) {
return true;
}
} catch (Exception e) {
}
}
}
}
return super.onKeyDown(keyCode, event);
}
上面代码我们监听了下键,判断展示数据的RecyclerView是否获得焦点了,接着判断了数据size是否为空,算出数据数量,下面是个空指针,异常里面的判断意思是若:最后一个item获取到焦点就拦截遥控下键,让焦点一直停留在最后一个item上,就不会出现焦点乱跑了
也可以重写LinearLayoutManager解决这个问题,
若你有其他问题也可留言询问,我会帮你解决或协同你解决
更多推荐
所有评论(0)