【问题标题】:Multiple ListRows for each Header on BrowseFragment - Leanback libraryBrowseFragment 上每个标题的多个 ListRows - Leanback 库
【发布时间】:2015-09-21 00:20:17
【问题描述】:

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

【问题讨论】:

标签: android custom-controls android-tv leanback


【解决方案1】:

Leanback 团队最近在库的版本 24.0.0 中为一个 HeaderItem 添加了对多个 ListRows 的支持。它允许您提供映射到HeaderItemRowsFragment。你可以在他们的Leanback showcase 中看到一个例子。具体来说,here 是他们提供示例的文件。

BrowseFragment 中需要一个新的PageRowFragmentFactory,它指定哪些片段映射到哪个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 的实例,现在您将拥有包含多个ListRows 的RowsFragment 映射到一个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 涵盖了更多新增内容。

【讨论】:

  • @Kyle Venn :我做了与上面的示例项目相同的操作,但搜索按钮不会自动隐藏。 (图片:i.imgur.com/mCeCj0o.png)你能帮帮我吗?你能帮我吗?
  • @MrSiro,我很乐意看一下 - 但如果我能看到你的代码,我会更有帮助。你能用你的代码打开一个新的 Stack Overflow 问题并提供链接吗?隐藏和显示是通过BrowseFragmentTitleView 交谈来实现的。这一切都应该自动运行。
  • @KyleVenn:我解决了这个问题。谢谢你。你能帮我们解决错误吗:stackoverflow.com/questions/48576744/…
【解决方案2】:

有没有支持多行列表的presenter?

我不知道。问题是 BrowseFragment 只接受子类Row 的子类。因此,BrowseFragment 中的每个条目只能有单行(及其各自的标题)。

我正在考虑创建一个自定义演示者 RowsFragment 嵌入在每个项目中,如果我的方法是,请纠正我 错了。

正如我刚才提到的,我怀疑创建自定义演示者会有所帮助。

到目前为止,我能想到的唯一解决方案是简单地创建一个自定义版本的 BrowseFragment(通过手动扩展 RowsFragmentHeadersFragment 类),以便它支持任何类型的片段。

如果你有兴趣,我写了一系列关于这个过程的文章 https://medium.com/building-for-android-tv/

以及提供自定义版本的 BrowseFragment https://github.com/dextorer/BuildingForAndroidTV 的基础项目

我也在考虑编写一个库来简化这个自定义组件的使用。

【讨论】:

  • 完美,您指出了我的问题的解决方案。喜欢你所有的 Android TV 文章,为我节省了大量的源代码检查时间。
  • Dextor,任何创建具有不同 UI(两个标题项)的自定义详细信息片段的线索都会非常有帮助。
猜你喜欢
  • 2016-08-02
  • 2019-03-09
  • 1970-01-01
  • 2017-07-06
  • 2018-05-21
  • 2019-05-11
  • 2018-06-16
  • 2015-02-01
  • 1970-01-01
相关资源
最近更新 更多