Cod*_*ury 9 android custom-controls android-tv leanback
我开始使用Leanback支持我们的应用程序.根据UI要求,我需要添加与每个标题对应的多个列表行,这与Youtube App在Android TV上的行为完全相同.默认ListRowPresenter似乎只渲染一个列表行及其标题.是否有任何支持多个列表行的演示者?我正在考虑在每个项目中嵌入RowsFragment创建自定义演示者的行,如果我的方法错误,请纠正我.
Kyl*_*enn 20
Leanback团队最近在库的版本中增加了对多个ListRows的支持.它允许您提供映射到的.你可以在他们的Leanback展示中看到它的一个例子.具体来说,这是他们提供示例的文件.HeaderItem24.0.0RowsFragmentHeaderItem
PageRowFragmentFactory您需要一个新的,BrowseFragment它指定哪些片段映射到哪些片段HeaderItem.像这样:
@Override
public Fragment createFragment(Object rowObj) {
Row row = (Row)rowObj;
mBackgroundManager.setDrawable(null);
if (row.getHeaderItem().getId() == HEADER_ID_1) {
return new SampleFragmentA();
} else if (row.getHeaderItem().getId() == HEADER_ID_4) {
return new WebViewFragment();
}
throw new IllegalArgumentException(String.format("Invalid row %s", rowObj));
}
Run Code Online (Sandbox Code Playgroud)
你可以让上面的方法返回一个实例,RowsFragment现在你将只RowsFragment包含多个ListRows映射HeaderItem.
截至目前,您可以通过版本24.0.0的Leanback访问此优势,并在gradle文件中使用以下行:
compile 'com.android.support:leanback-v17:24.0.0
Run Code Online (Sandbox Code Playgroud)
您可能会收到警告,但现在可以安全地忽略它.
在24.0.0Leanback 版本中还有很多其他非常酷的东西,比如时髦的过渡动画和更干净的API.它可以在我上面链接的示例项目中找到.还有Google I/O的演讲,其中涵盖了更多内容.
是否有任何支持多个列表行的演示者?
从来没听说过.问题是BrowseFragment只接受子类的子节点Row.因此,BrowseFragment中的每个条目只能有单行(及其各自的标题).
我正在考虑在每个项目中嵌入RowsFragment创建自定义演示者的行,如果我的方法错误,请纠正我.
正如我刚才提到的,我怀疑创建自定义演示者会有所帮助.
到目前为止,我能够提出的唯一解决方案是创建一个自定义版本的BrowseFragment(通过手动扩展RowsFragment和HeadersFragment类),以便它支持任何类型的片段.
如果你有兴趣,我写了一系列关于这个过程的文章 https://medium.com/building-for-android-tv/
和一个提供BrowseFragment自定义版本的基础项目https://github.com/dextorer/BuildingForAndroidTV
我也在考虑编写一个库来简化这个自定义组件的使用.
| 归档时间: |
|
| 查看次数: |
4437 次 |
| 最近记录: |