前言:merge主要是進行UI佈局的優化的,刪除多餘的層級,優化UI。<merge/>多用於替換frameLayout或者當一個佈局包含另外一個佈局的時候,<merge/>標籤用於消除師徒層次結構中多餘的視圖組。例如你的朱佈局文件是垂直的,此時若是你引入一個垂直佈局的<include>.這時若是include佈局使用的LinearLayout就沒意義了,使用的話反而減慢你的UI表現。這時能夠使用<merge/>標籤優化。<merge>標籤也就是排除一個佈局插入另外一個佈局產生的多餘的viewgroup.android
1.用法佈局
1 <merge xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" > 5 6 <TextView 7 android:layout_width="match_parent" 8 android:layout_height="wrap_content" 9 android:text="我是button3" /> 10 11 <Button 12 android:layout_width="match_parent" 13 android:layout_height="wrap_content" 14 android:text="我是button2" /> 15 16 </merge>
佈局的效果<這裏注意是frameLayout的效果>,爲何用在這裏呢,由於android有一個默認的FrameLayout的佈局優化
2.當把有<merge>標籤的佈局放在<include>中的時候,就會忽視<merge>xml
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/container" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" > 7 8 <include layout="@layout/fragment_main" /> 9 10 </LinearLayout>
效果blog
3.<merge>標籤的限制io
小白: <merge />標籤有什麼限制沒?fragment
小黑: <merge />只能做爲XML佈局的根標籤使用。當Inflate以<merge />開頭的佈局文件時,必須指定一個父ViewGroup,而且必須設定attachToRoot爲true。im