如何将 SpanSizeLookup 逻辑添加到 VerticalGridView?
How can I add SpanSizeLookup logic to VerticalGridView?
我正在为电视平台开发一个应用程序,当默认 RecyclerView
和 GridLayoutManager
无法正确处理来自 DPAD 的焦点控制时,我遇到了一个问题。它有下一个问题:
- 如果列表滚动得太快,焦点会丢失
- 如果滚动太快,焦点会跳转
到列表中的第一个位置
- 有时,当按下 DPAD 向下键时,焦点位于不正确的索引处(例如我们有 4 列,焦点在第一个元素上,按下 DPAD 向下键后它跳转到索引 5,但是它必须跳转到索引 4)
- 恢复实例状态后焦点丢失
- 很多其他的小问题...
为了避免这种行为,我使用了 leanback
库中的 VerticalGridView
和额外的代码,它几乎可以完美运行 - 没有任何问题,并且可以与鼠标和键盘一起使用。唯一我不能做的事 - 像 "mobile" GridLayoutManager
一样设置 SpanSizeLoockup
,因为没有这样的功能。我需要它在我的列表中使用 header 视图,其中跨度大小为行中的整个宽度。 LayoutManager
逻辑太奇怪了,我想尽可能简单地实现它。
问题:如何将 SpanSizeLoockup
功能添加到 VerticalGridView
并且不破坏那里的任何东西?
唯一想到的是使用自定义视图,用 header 表示列表中的一行,但这也会破坏焦点逻辑。
提前致谢!
简短的回答 - 不对源代码进行硬修改是不可能的。
的确,这不可能。请在此处查看跟踪器问题:https://issuetracker.google.com/u/1/issues/138276997。
不要犹豫,为它加注星标以提高它的知名度。
我正在为电视平台开发一个应用程序,当默认 RecyclerView
和 GridLayoutManager
无法正确处理来自 DPAD 的焦点控制时,我遇到了一个问题。它有下一个问题:
- 如果列表滚动得太快,焦点会丢失
- 如果滚动太快,焦点会跳转 到列表中的第一个位置
- 有时,当按下 DPAD 向下键时,焦点位于不正确的索引处(例如我们有 4 列,焦点在第一个元素上,按下 DPAD 向下键后它跳转到索引 5,但是它必须跳转到索引 4)
- 恢复实例状态后焦点丢失
- 很多其他的小问题...
为了避免这种行为,我使用了 leanback
库中的 VerticalGridView
和额外的代码,它几乎可以完美运行 - 没有任何问题,并且可以与鼠标和键盘一起使用。唯一我不能做的事 - 像 "mobile" GridLayoutManager
一样设置 SpanSizeLoockup
,因为没有这样的功能。我需要它在我的列表中使用 header 视图,其中跨度大小为行中的整个宽度。 LayoutManager
逻辑太奇怪了,我想尽可能简单地实现它。
问题:如何将 SpanSizeLoockup
功能添加到 VerticalGridView
并且不破坏那里的任何东西?
唯一想到的是使用自定义视图,用 header 表示列表中的一行,但这也会破坏焦点逻辑。
提前致谢!
简短的回答 - 不对源代码进行硬修改是不可能的。
的确,这不可能。请在此处查看跟踪器问题:https://issuetracker.google.com/u/1/issues/138276997。 不要犹豫,为它加注星标以提高它的知名度。