如何将 SpanSizeLookup 逻辑添加到 VerticalGridView?

How can I add SpanSizeLookup logic to VerticalGridView?

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

  1. 如果列表滚动得太快,焦点会丢失
  2. 如果滚动太快,焦点会跳转 到列表中的第一个位置
  3. 有时,当按下 DPAD 向下键时,焦点位于不正确的索引处(例如我们有 4 列,焦点在第一个元素上,按下 DPAD 向下键后它跳转到索引 5,但是它必须跳转到索引 4)
  4. 恢复实例状态后焦点丢失
  5. 很多其他的小问题...

为了避免这种行为,我使用了 leanback 库中的 VerticalGridView 和额外的代码,它几乎可以完美运行 - 没有任何问题,并且可以与鼠标和键盘一起使用。唯一我不能做的事 - 像 "mobile" GridLayoutManager 一样设置 SpanSizeLoockup,因为没有这样的功能。我需要它在我的列表中使用 header 视图,其中跨度大小为行中的整个宽度。 LayoutManager 逻辑太奇怪了,我想尽可能简单地实现它。

问题:如何将 SpanSizeLoockup 功能添加到 VerticalGridView 并且不破坏那里的任何东西?

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

提前致谢!

简短的回答 - 不对源代码进行硬修改是不可能的。

的确,这不可能。请在此处查看跟踪器问题:https://issuetracker.google.com/u/1/issues/138276997。 不要犹豫,为它加注星标以提高它的知名度。