一個Frame佈局內部的LinearLayout,二者都被設置爲match_parent,這樣作沒有什麼實際的意義,只是增長了填充他們的時間。android
佈局雖然能夠任意的嵌套,因此很容易建立出複雜而深嵌套層次結構,雖然沒有嚴格的限制,但最好控制在10層之內。佈局
當出現冗餘的嵌套時,最好使用merge標籤分割出另外一個文件,而後使用include標籤把佈局插入進來。merge標籤在被添加到另外一個佈局文件中時會刪除merge節點,包裹內部的內容到另外一個佈局中去。優化
使用merge和include標籤能夠建立靈活的、可複用的佈局定義。<include layout=「@layout/xxx」 />
code
填充每一個額外的View都須要花費時間和資源,爲了最大限度提升應用程序的速度和響應能力,佈局包含的View應該不超過80個,若是超過這個限制,填充佈局花費的時間將會成爲一個顯著的問題。資源
想要在複雜的佈局內填充的View的數量最少,可使用ViewStub。it
View Stub的工做原理就像市一個延遲填充的include標籤,一個stub表明了在父佈局中指定的(多個)子View,但只有顯示的調用inflate()方法或被置爲可見的時候,這個stub纔會被填充。原理
// 查找 Stub View stub = findViewById(R.id.listview_stub); // 將其設置爲可見,以填充佈局 stub.setVisibility(View.VISIBLE); // 查找已填充的 stub 佈局的根節點 View downloadProgessPanel = findViewById(R.id.listview);