Layout(佈局)

Layout

  • LinearLayout(線性佈局)最經常使用的佈局方式,垂直或橫向佈局。可使用weight屬性控制每一個視圖的相對寬度
  • FrameLayout(單幀佈局)最簡單的佈局,把新的視圖堆放在前一個視圖的上面,以前的視圖會被遮蓋。默認的位置市左上角,不過可使用gravity屬性來改變位置。
  • RelativeLayout(相對佈局)能夠根據邊界位置設置每一個視圖顯示的位置。
  • GridLayout(表格佈局)在android 4.0(API level 14)中被引入的一種佈局方式,GridLayout及其靈活,能夠顯著的簡化佈局,並且能夠減輕或者消除在使用前敘佈局構建UI時常常須要複雜的嵌套。


優化佈局

一個Frame佈局內部的LinearLayout,二者都被設置爲match_parent,這樣作沒有什麼實際的意義,只是增長了填充他們的時間。android

佈局雖然能夠任意的嵌套,因此很容易建立出複雜而深嵌套層次結構,雖然沒有嚴格的限制,但最好控制在10層之內。佈局

當出現冗餘的嵌套時,最好使用merge標籤分割出另外一個文件,而後使用include標籤把佈局插入進來。merge標籤在被添加到另外一個佈局文件中時會刪除merge節點,包裹內部的內容到另外一個佈局中去。優化

使用merge和include標籤能夠建立靈活的、可複用的佈局定義。
<include layout=「@layout/xxx」 />code


避免使用過多的View

填充每一個額外的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);
相關文章
相關標籤/搜索