2016-11-12 63 views
0

考慮這種情況:如何將多個視圖,而無需使用嵌套佈局

<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。我有兩個選擇:

  1. 創建總結佈局LinearLayout)與Id,這樣我就可以找到並隱藏
  2. Id查看發現並隱藏起來。

第一個選項將起作用,但我不想爲此創建額外的nested layout。 第二個選項也可以,但是如果每個視圖都有一個Id,我的佈局將變得不可讀。

我知道有第三內存優化選項組多個視圖,但我不記得它是如何工作和谷歌搜索給了我永遠的ViewGroup ...

任何想法?

回答

1

您可以嘗試使用所謂的merge標籤,並將其與include標籤配對使用。這樣做可以讓你在不同的文件中使用相同的佈局(因爲你似乎有多個組在一起)。 <merge/>標記會將元素合併到頂層佈局中(在本例中爲LinearLayout)。我沒有在這種情況下使用它,所以我想象會發生什麼是你將無法在一個組中檢索它們。不過值得一試。

我覺得選項1不是非此即彼這些原因一個不錯的選擇:

  1. 它更容易代碼。如果你沒有將它們分組在一起,那麼你會有額外的線路並記住額外​​的ID。只有一個佈局包裹它,那麼你可以隱藏一個佈局。

  2. 它更容易維護。如果您更改版權外觀會發生什麼情況?如果你想改變佈局的其餘部分會發生什麼?只要一個包裹,就可以輕鬆地擺弄一個視圖,並且內部的所有內容都保持不變。

  3. 性能命中不是不好。總的來說,這看起來像是最頂級的根視圖。充氣這個佈局不會像你說的那樣糟糕,膨脹一個ListView項目。這是一個一勞永逸的操作,就是這樣。您不希望陷入做premature optimization的陷阱,因爲犧牲代碼可維護性而不利於優化。