将布局XML填充到自定义LinearLayout中会创建多余的LinearLayout视图

7
我正在创建自定义的LinearLayout组件,旨在模仿ListView的某些功能,用于ScrollView中,因为我不能/不应该在ScrollView中使用ListView。我们称它为CustomListView。此外,我还创建了另一个自定义LinearLayout来表示列表视图中的每个项目,我们称其为NewItemView。
无论如何,在初始化NewItemView时,我通过填充布局XML来设置它。布局XML将LinearLayout声明为其根视图,并且与simple_list_item_multiple_choice.xml等布局相似。
总体而言,主activity拥有一个CustomListView。我们在CustomListView上调用addItem(Item item)以向列表中添加新项,实际上是创建了一个新的NewItemView,并使用Item类的数据填充它。
在newListItem.initListItem(Context context)中,我使用如下方法进行展开:
 ((Activity)getContext())
            .getLayoutInflater()
            .inflate(R.layout.list_item, this, true);

这实际上是有效的!然而,我的问题在于通过 Monitor 进行检查后,每个列表项周围都有一个多余的 LinearLayout。我的理解是,这通常是一个不好的主意。有一个 LinearLayout 用于 CustomListView,然后对于每个项目,都有一个只包含一个子项(即一个 LinearLayout)的 LinearLayout!最后一个 LinearLayout 包含实际的子项。
我认为这可能与我正在创建的基于 LinearLayout 的自定义组件以及填充具有 LinearLayout 根的布局有关。
1个回答

5
是的,这就是merge标签的作用。只需将根LinearLayout标签替换为merge即可实现您所需的功能。
请参见此博客文章

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接