gpt4 book ai didi

android - 如何自定义 Leanback 的 ListRows?

转载 作者:行者123 更新时间:2023-11-29 19:21:49 25 4
gpt4 key购买 nike

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

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

我想获得 ListRowView/ListRowPresenter 中的现有功能,但我不确定如何“正确”地执行此操作。

最佳答案

Leanback 的几乎所有内容一样,给猫剥皮的方法不止一种。

我们需要自定义 ListRow 以向标题添加更多填充。我们通过重写 ListRowPresenteronBindRowViewHolder 实现了这种级别的自定义,获取标题的 View(通过 View header = holder .getHeaderViewHolder().view;).然后我们使用 header.getLayoutParams().height = rowItem.getRowHeaderHeight(); 更改它的高度。

使用相同的技术,您可以将页脚 View 动态添加到 holder.view(使用 addView)。

另一种方法是遵循 RowPresenter 的文档推荐。相关报价是:

When a subclass of RowPresenter adds UI widgets, it should subclass RowPresenter.ViewHolder and override createRowViewHolder(ViewGroup) and initializeRowViewHolder(ViewHolder). The subclass must use layout id "row_content" for the widget that will be aligned to the title of any HeadersFragment that may exist in the parent fragment.

因此,使用这种新的推荐方法,您基本上可以提供自己的 xml。我相信您甚至可以子类化 ListRowPresenter。要查看代码的工作原理,请查看 ListRowView看到它为 R.layout.lb_list_row 膨胀了 xml .然后它只使用 R.id.row_content 的 View 。

这将是 holder.view 提供的实际 View ,然后您可以在其上设置文本并执行任何您想要的操作。

如果您需要任何进一步的说明,请告诉我。

关于android - 如何自定义 Leanback 的 ListRows?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42283133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com