考虑这种情况:
<LinearLayout style="@style/Basic_W_mp_H_wc_Vertical">
<!-- IMAGE-1 -->
<TextView style="@style/Copyright_TextView_1" />
<ImageView style="@style/Copyright_Image_1" />
<include layout="@layout/layout_copyright_info"/>
<View style="@style/HorizontalSeparatorGray"/>
<!-- IMAGE-2 -->
<TextView style="@style/Copyright_TextView_2" />
<ImageView style="@style/Copyright_Image_2" />
<include layout="@layout/layout_copyright_info"/>
<View style="@style/HorizontalSeparatorGray"/>
<!-- IMAGE-X -->
[...]
</LinearLayout>
现在我想隐藏IMAGE-1
的版权信息。我有两个选择:
LinearLayout
创建 wrap-layout (Id
),以便我可以找到并隐藏它Id
查找并隐藏它们。第一个选项可以使用,但我不想为此创建额外的nested layout。 第二个选项也可以,但是如果每个视图都有一个Id,我的布局将变得不可读。
我知道有第三个内存优化选项可以对多个视图进行分组,但我不记得它是如何工作的,谷歌搜索总是给我ViewGroup ...
有什么想法吗?
答案 0 :(得分:2)
您可以尝试使用名为merge标记的内容,并将其与include标记配对。它的作用是允许您在不同的文件中使用相同的布局(因为您似乎有多个组在一起)。 <merge/>
标记会将元素合并到顶级布局(在本例中为LinearLayout)。我没有在这种情况下使用它,所以我想会发生什么是你将无法在一个组中检索它们。值得一试。
我认为选项1也不是一个糟糕的选择,原因如下:
编码更容易。如果你不将它们组合在一起,那么你将有额外的行并记住额外的ID。只有一个布局环绕它,你就可以隐藏一个布局。
维护起来比较容易。如果您更改版权外观会怎样?如果要更改布局的其余部分会发生什么?只需一个包装,就可以更容易地用一个视图摆弄,内部的一切都保持不变。
表现不佳 总的来说,这看起来像是最顶层的根视图。膨胀这个布局不会像你说的那样糟糕,膨胀ListView项目。这是一次又一次的操作,就是这样。你不想陷入做premature optimization的陷阱,你牺牲代码可维护性而不利于优化。