如何将SpanSizeLookup逻辑添加到VerticalGridView?

时间:2019-04-28 22:16:06

标签: android android-recyclerview recyclerview-layout leanback

我正在为电视平台开发一个应用程序,当默认RecyclerViewGridLayoutManager不能正确处理DPAD的焦点控制时,我遇到了一个问题。它有下一个问题:

  1. 如果列表滚动得太快,焦点就会丢失
  2. 如果滚动速度太快,焦点将跳跃 到列表中的第一个位置
  3. 有时,当按下DPAD向下按钮时,焦点会定位在错误的索引上(例如,我们有4列,焦点位于第一个元素上,并且在按下DPAD向下键之后,它会跳到索引5,但是必须跳到索引4)
  4. 恢复实例状态后焦点丢失
  5. 其他许多小问题...

为避免这种情况,我正在使用VerticalGridView库中的leanback和其他代码,它几乎可以完美运行-没问题,它可以与鼠标和键盘一起使用。我唯一不能做的-将SpanSizeLoockup设置为“移动” GridLayoutManager中的内容,因为没有这样的功能。我需要使用列表中的标头视图,并在整个行中使用跨度大小作为整个宽度。 LayoutManager逻辑太奇怪了,无法理解,我想尽可能容易地做到这一点。

问题:我如何向SpanSizeLoockup添加VerticalGridView功能,并且不破坏那里的内容?

唯一想到的是-使用自定义视图来表示带有标题的列表中的一行,但这也会破坏焦点逻辑。

谢谢!

2 个答案:

答案 0 :(得分:0)

简短的答案-如果不对源代码进行严格修改,就不可能做到这一点。

答案 1 :(得分:0)

实际上是不可能的。在此处查看跟踪器问题:https://issuetracker.google.com/u/1/issues/138276997。 不要犹豫地加注星标,以增加其可见度。