我正在开始为我们的应用提供Leanback支持。
根据UI的要求,我需要添加与每个标题对应的多个列表行,这就像Youtube App在Android TV上所做的一样。默认的 ListRowPresenter 似乎仅呈现一个列表行及其标题。是否有任何演示者支持多个列表行?我正在考虑创建在每个项目中嵌入RowsFragment的自定义演示者的行,如果我的方法不对,请纠正我。
最佳答案
Leanback团队最近为库的ListRow
版本中的一个HeaderItem
添加了对多个24.0.0
的支持。它允许您提供映射到RowsFragment
的HeaderItem
。您可以在其Leanback showcase中看到它的示例。具体来说,here是它们提供示例的文件。
您的PageRowFragmentFactory
中将需要一个新的BrowseFragment
,它指定哪个Fragment映射到哪个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));
}
您可以使上述方法返回一个
RowsFragment
的实例,现在您将拥有RowsFragment
,其中包含多个ListRow
映射到一个HeaderItem
。截止目前,您可以通过Leanback的24.0.0版访问此功能,在gradle文件中的以下行即可:
compile 'com.android.support:leanback-v17:24.0.0
您可能会收到警告,但是现在可以将其忽略。
Leanback的
24.0.0
版本中还有很多其他非常酷的东西,例如时髦的过渡动画和更清洁的API。所有这些都可以在我上面链接的示例项目中找到。还有一个talk from Google I/O,涵盖了更多的添加内容。关于android - BrowseFragment上每个标题的多个ListRows-Leanback库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31202041/