我'm getting started with Leanback support for our app. As per UI requirements I need to add multiple list rows corresponding to each header, it'就像Youtube App在Android TV上所做的那样 . 默认 ListRowPresenter 似乎只渲染一个列表行及其 Headers . 是否有任何支持多个列表行的演示者?我正在考虑在每个项目中嵌入RowsFragment创建自定义演示者的行,如果我的方法错误,请纠正我 .
2 回答
Leanback团队最近在库的版本
24.0.0
中为一个HeaderItem
添加了多个ListRow
的支持 . 它允许您提供映射到HeaderItem
的RowsFragment
. 您可以在Leanback showcase中看到它的示例 . 具体来说,here是他们提供示例的文件 .在
BrowseFragment
中需要一个新的PageRowFragmentFactory
,它指定哪些片段映射到HeaderItem
. 像这样:你可以让上面的方法返回一个
RowsFragment
的实例,现在你将RowsFragment
包含多个ListRow
的映射到一个HeaderItem
.截至目前,您可以通过版本24.0.0的Leanback访问此优势,并在gradle文件中使用以下行:
您可能会收到警告,但现在可以安全地忽略它 .
Leanback的版本_1310672中还有很多其他非常酷的东西,如时髦的过渡动画和更干净的API . 它可以在我上面链接的示例项目中找到 . 还有一个talk from Google I/O涵盖了更多的附加内容 .
从来没听说过 . 问题是BrowseFragment只接受子类
Row
的子节点 . 因此,BrowseFragment中的每个条目只能有单行(及其各自的 Headers ) .正如我刚才提到的,我怀疑创建自定义演示者会有所帮助 .
到目前为止,我能够提出的唯一解决方案是创建一个自定义版本的BrowseFragment(通过手动扩展
RowsFragment
和HeadersFragment
类),以便它支持任何类型的片段 .如果你有兴趣,我写了一系列关于这个过程的文章https://medium.com/building-for-android-tv/
和一个提供BrowseFragment https://github.com/dextorer/BuildingForAndroidTV自定义版本的基础项目
我也在考虑编写一个库来简化这个自定义组件的使用 .