【Android TV RecyclerView重点互动】博观而约取,厚积而薄发。这篇文章主要讲述Android TV RecyclerView重点互动相关的知识,希望能为你提供帮助。
我目前正在使用常规的RecyclerView
与GridLayoutManager
与不同的spanCount
取决于viewType
的android TV应用程序。一切都很好,但我有两个问题:
- 如果您长按dpad以在项目之间快速滚动,有时焦点将丢失到不属于RecyclerView的子视图。
- 我如何告诉
RecyclerView
将当前的焦点视图保持在网格的中心?
VerticalGridView
库的LeanBack
来修复的,但它使用的LayoutManger
是内部的并且不支持spanCount
。答案Recycler视图适用于Android TV.Possible解决方案包括:
1.add focusable和focusableInTouchode to view。通过代码添加focusListner,并在每次单击视图时请求焦点。
2.要将Recycler View焦点项目保留在中心,您必须覆盖布局管理器,就像这个例子一样。
RecyclerView smoothScroll to position in the center. android
要么
使用layoutManager.scrollToPositionWithOffset(position,offset),其中以位置为中心的视图位置和偏移量是回收器视图宽度/ 2。
另一答案
- 对于常规的
RecyclerView
, 我必须指定:android:descendantFocusability="beforeDescendants"
此外,android:nextFocusDown="@+id/recyclerviewId"
将把重点放在RV本身。 - 我看到的唯一解决方案是选择项目来定位
currentPosition + spancount
的关键监听器。
这是workaround。
这里的问题是bug使用
RecycleView
的SO question实现,当焦点接近GridLayoutManager
的内边界时调用LinearLayoutManager
。 onFocusSearchFailed()
实现只提供第一个/最后一个(取决于滚动方向)元素。因此焦点跳转到新行的第一个/最后一个元素。因此,也许这种解决方法可以解决您的问题或让您了解如何解决您的问题。
推荐阅读
- 使用回收视图时无法在Android模拟器中看到应用栏
- 如何解决无法识别应用的tf.app.run()错误()
- 重复条目(android / support / v7 / recyclerview / extensions / ListAdapter.class [复制])
- 适用于所有移动设备的Webview App并上传到Play商店
- Android WebView - 重置HTTP会话
- Android WebView err_unknown_url_scheme
- 为什么css属性在android webview中会发生变化
- 如何使用CLI检查Ubuntu Server 16.04中的系统规格
- 如何在Windows上安装python并设置基本的hello world