我正在开始为我们的应用提供Leanback支持。
根据UI的要求,我需要添加与每个标题对应的多个列表行,这就像Youtube App在Android TV上所做的一样。默认的 ListRowPresenter 似乎仅呈现一个列表行及其标题。是否有任何演示者支持多个列表行?我正在考虑创建在每个项目中嵌入RowsFragment的自定义演示者的行,如果我的方法不对,请纠正我。

最佳答案

Leanback团队最近为库的ListRow版本中的一个HeaderItem添加了对多个24.0.0的支持。它允许您提供映射到RowsFragmentHeaderItem。您可以在其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/

10-09 06:11