Android 四大布局總結
1.LinearLayout
這個線性佈局大家都不陌生,只是這裡面會有一些誤區。
如果LinearLayout的排列方向是horizontal,內部的控制元件就絕對不能將寬度指定為match_parent,因為這樣,一個控制元件就會將水平方向佔滿,其他的控制元件就沒法放了,vertical亦如此。
android:layout_gravity屬性和android:gravity的區別。這個估計好多人都沒弄明白過,我這裡解釋一下。
android:layout_gravity用於指定控制元件在佈局中的對齊方式,而android:gravity用於指定文字在控制元件中的對齊方式,但是線上性佈局中,如果方向是horizontal,那麼只有垂直方向的對齊方式才會生效,因為水平方向上的長度是不固定的,沒新增一個控制元件,水平方向上的長度會改變,所以無法指定該方向上的對齊方式,vertical相反。
線性佈局中的android:layout_weight屬性,如果你使用了,那麼控制元件的寬度將不再由android:layout_width來決定, 把width設定為0dp是一種比較規範的寫法。
我們還可以將一個控制元件的weight屬性設定為1,一個不設,而把寬度設定為wrap_content,那麼第二個控制元件的寬度則會按照wrap_content來計算,而第一個控制元件會佔滿螢幕所有的剩餘空間。
2.相對佈局Relativelayout
這是一個常用的佈局,可以通過相對定位的方式讓控制元件出現在佈局的任何位置,有很多屬性供其選擇,也很容易掌握,不再贅述。
3.幀佈局FrameLayout
這個比較簡單,沒有方便的定位方式,所有的控制元件都預設擺放在佈局的左上角。不是很常用。
4,百分比佈局
我今天主要總結的就是這個佈局,我12年開始學習android的時候,還沒有這個佈局。這個百分比佈局只為Framelayout和Relativelayout進行了功能擴充套件,提供了PercentFrameLayout和PercentRelativeLayout這兩個全新的佈局。
如何使用?
我們需要開啟app目錄下的build.gradle加入佈局庫的依賴:compile 'com.android.support:percent:24.2.1'
我們寫一個佈局檔案
<android.support.percent.PercentFremLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="button"
app:layout_widthPercent="50%"
app:layout_heightPercent="50%"/>
</android.support.percent.PercentFrameLayout/>
執行一下,你就發現這個Button的寬高各站螢幕的50%,不過PercentFrameLayout還是會繼承FrameLayout的特性。
當然還有絕對佈局AbsoluteLayout和TableLayout,這些專案中很少用到,就不講了。