【问题标题】:Force RecyclerView Scroll when focus change (Android TV)焦点更改时强制 RecyclerView 滚动(Android TV)
【发布时间】:2021-01-02 22:17:54
【问题描述】:
在使用 RecyclerView 时,如果所有项目都在屏幕上可见,则移动焦点不会导致 LayoutManager 滚动。
例如:
| (1) 2 3 4 5 | -> DPAD 右 -> | 1 (2) 3 4 5 |
我想让它随着焦点项目的变化而滚动。
| (1) 2 3 4 5 | -> DPAD 右 -> | (2) 3 4 5 |
我正在考虑使用 smoothScrollToPosition,但它不起作用,因为布局管理器不考虑在那种情况下滚动。还有其他方法可以实现吗?谢谢
【问题讨论】:
标签:
android
android-recyclerview
android-tv
【解决方案1】:
尝试使用 androidx.leanback:leanback:1.0.0 库中的 VerticalGridView 或 HorizontalGridView。
gridView.setItemAlignmentOffset(0)
gridView.setItemAlignmentOffsetPercent(
VerticalGridView.ITEM_ALIGN_OFFSET_PERCENT_DISABLED
)
// align to a fixed position from top
gridView.setWindowAlignmentOffset(10)
gridView.setWindowAlignmentOffsetPercent(
VerticalGridView.WINDOW_ALIGN_OFFSET_PERCENT_DISABLED
)
gridView.setWindowAlignment(VerticalGridView.WINDOW_ALIGN_NO_EDGE)
此代码示例来自leanback 库的BaseRowFragment。如您所见,VerticalGridView 基于 RecyclerView 并使用了一个leanback GridLayoutManager。