将布局XML扩展为自定义LinearLayout会创建冗余的LinearLayout视图

时间:2013-06-25 23:04:06

标签: android android-layout android-linearlayout

我正在创建自定义LinearLayout组件。它旨在模仿ListView的某些功能,以便在ScrollView中使用,因为我不能/不应该在ListView内使用ScrollView。我们称之为 CustomListView 。此外,我正在创建另一个自定义LinearLayout来表示此伪列表视图中的每个项目,我们称之为 NewItemView

无论如何,在初始化 NewItemView 时,我是通过夸大布局XML来设置的。布局XML将LinearLayout声明为其根视图,与simple_list_item_multiple_choice.xml之类的布局没有什么不同。

总的来说,主要活动是 CustomListView 。我们在 CustomListView 上调用addItem(Item item)以向列表添加新项目,实际上,它会创建一个新的 NewItemView ,并使用Item类中的数据填充它

我正在newListItem.initListItem(Context context)充气:

 ((Activity)getContext())
            .getLayoutInflater()
            .inflate(R.layout.list_item, this, true);

这实际上有效! 但是,我遇到的问题是,在使用Monitor进行检查时,只有多余的LinearLayout坐在列表中的每个项目周围。我的理解是,这通常是一个坏主意。 CustomListView LinearLayout,然后每个项目都有一个LinearLayout,只有一个孩子;一个LinearLayout!最后一个包含实际的孩子。

我希望它与我正在创建一个基于LinearLayout的自定义组件,然后在它的根目录下使用LinearLayout膨胀布局这一事实有关。

1 个答案:

答案 0 :(得分:5)

是的,这是merge标记的用途。只需将您的根LinearLayout标记替换为merge,这应该可以满足您的需求。

请参阅this blog post