我正在开始为我们的应用程序提供Leanback支持.
根据UI要求,我需要添加与每个标题相对应的多个列表行,就像Youtube App在 Android TV上所做的一样.默认的ListRowPresenter似乎只渲染一个列表行及其标题.是否有任何主持人支持多个列表行?我正在考虑在每个项目中嵌入RowsFragment创建自定义演示者的线条,如果我的方法是错误的,请更正我.在这里欣赏任何帮助.谢谢
根据UI要求,我需要添加与每个标题相对应的多个列表行,就像Youtube App在 Android TV上所做的一样.默认的ListRowPresenter似乎只渲染一个列表行及其标题.是否有任何主持人支持多个列表行?我正在考虑在每个项目中嵌入RowsFragment创建自定义演示者的线条,如果我的方法是错误的,请更正我.在这里欣赏任何帮助.谢谢
解决方法
Leanback团队最近添加了对图书馆版本24.0.0中的一个HeaderItem的多个ListRows的支持.它允许您提供映射到HeaderItem的RowsFragment.您可以在他们的
Leanback showcase中看到一个例子.具体来说,here是他们提供一个例子的文件.
在您的BrowseFragment中,您将需要一个新的PageRowFragmentFactory,它指定哪些Fragments映射到哪个HeaderItems.像这样:
@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)); }
您可以使用上述方法返回RowsFragment的一个实例,现在您将RowsFragment包含多个ListRows映射到一个HeaderItem.
直到现在,您可以通过版本24.0.0的Leanback与您的毕业文件中的以下行获得此优点:
compile 'com.android.support:leanback-v17:24.0.0
您可能会收到警告,但现在可以安全地忽略.
在Leanback版本的24.0.0版中,还有一大堆其他非常酷的东西,就像snazzy过渡动画和更干净的API.可以在上面链接的示例项目中找到它.还有一个talk from Google I/O,涵盖更多的补充.