如何自定义Leanback的ListRows?

时间:2017-02-16 19:39:09

标签: android gridview android-tv leanback

Android的leanback库提供了一些自定义RowFragment的标准方法,包括行和卡本身,但我不确定如何在框架上提供的内容之外添加自定义元素。

我特意想要实现的是将一个FooterItem添加到一行,类似于每个Row有一个HeaderItem的方式。

我希望获得ListRowView / ListRowPresenter中的现有功能,但我不确定如何操作"正确"。

1 个答案:

答案 0 :(得分:2)

Leanback的几乎所有事物一样,只有一种方法可以给猫皮肤。

我们需要自定义ListRow以向标头添加更多填充。我们通过覆盖onBindRowViewHolder的{​​{1}}来获得此级别的自定义,抓取标题的ListRowPresenter(通过View)。然后我们用View header = holder.getHeaderViewHolder().view;改变了它的高度。

使用相同的技术,您可以动态地将页脚视图添加到header.getLayoutParams().height = rowItem.getRowHeaderHeight();(使用holder.view)。

另一种方法是遵循RowPresenter的文档建议。相关的引用是:

  

当RowPresenter的子类添加UI小部件时,它应该是RowPresenter.ViewHolder的子类并覆盖createRowViewHolder(ViewGroup)和initializeRowViewHolder(ViewHolder)。子类必须使用布局ID“row_content”作为窗口小部件,该窗口小部件将与父片段中可能存在的任何HeadersFragment的标题对齐。

因此,使用这种新的推荐方法,您基本上将提供自己的xml。我相信你甚至可以继承addView。要查看代码的工作原理,请查看ListRowView以查看它为R.layout.lb_list_row的xml膨胀。然后它只使用ListRowPresenter的视图。

然后,这将是R.id.row_content提供的实际视图,然后您可以在其上设置文本并执行任何操作。

如果您需要进一步澄清,请与我们联系。