Android的leanback库提供了一些自定义RowFragment的标准方法,包括行和卡本身,但我不确定如何在框架上提供的内容之外添加自定义元素。
我特意想要实现的是将一个FooterItem添加到一行,类似于每个Row有一个HeaderItem的方式。
我希望获得ListRowView / ListRowPresenter中的现有功能,但我不确定如何操作"正确"。
答案 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
提供的实际视图,然后您可以在其上设置文本并执行任何操作。
如果您需要进一步澄清,请与我们联系。