Android TV中多个RecyclerView焦点问题
在图1中存在三个名称依次为Top、Center、Bottom的RecyclerView
碰到如下几个问题:
在top中按遥控器左右快速移动时,焦点会飞到其他的RecyclerView中;(center和bottom也是类似的)
想要的效果:在top、center、bottom中左右移动焦点时,只能在当前RecyclerView中移动,除非是按上下键才能移动到其他的RecyclerView
当前焦点在Item
0
的时候,再向左移动直接移动到RecyclerView的最后一个Item19
上;而在Item的19
上时,再向右移动直接移动到Item0
上。
这两个问题目前还没有找到好的解决办法,如果能给一些指点或者思路,不胜感激!
现在勉勉强强将第一个需求解决了,但是当RecyclerView中的Item布局复杂并且数据很多的时候快速滑动光标还是会飞,没有完美解决!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你的问题是:左右快速移动,焦点会跑到其它 RecyclerView 上.
其实这个问题,Leanback就已经解决了的.
VerticalGridView
leaback 简单的 Demo 数据.
到达右边的底部的时候,长按右键,焦点是不会下去的.
如何设置:
为何?因为 Leanback 的 GridLayoutManager 的 onInterceptFocusSearch 进行了处理.
也处理了 放大遮挡问题,焦点搜索失败的问题 onFocusSearchFailed,也处理了焦点记忆问题 onAddFocusables.
http://stackoverflow.com/ques...
*长按向下向右,view滚动速度跟不上key焦点转移速度, 这个时候焦点view会被置为null,然后屏幕上第一个能获得焦点的view获得焦点. 这个链接的解决方法是加上key的间隔限制*.
private long mLastKeyDownTime = 0;
layoutManager onFocusSearchFailed()
覆写LinearLayoutManager 下的onInterceptFocusSearch可以解决需求2