android主要三大佈局:線性佈局LinearLayout、相對佈局RelativeLayout、幀佈局FrameLayout。 ...
我學習android第一步接觸的就是佈局的學習。佈局是androidUI的基礎,是重中之重。總的來說android有6種佈局,分別是線性佈局LinearLayout、相對佈局RelativeLayout、幀佈局FrameLayout、絕對佈局AbsoluteLayaout、表格佈局TableLayout、網格佈局GridLayout。我覺得開發過程中最常用的就是前三種,下麵就來總結一下前三種佈局的屬性。
線性佈局LinearLayout:
android:orientation 設置線性佈局的走向:水平(horizontal),垂直(vertical)
垂直線性佈局:每一行只能放一個控制項,到底部放不下就會被擠出去,
水平線性佈局:每一列只能放一個控制項,到右邊放不下就會被擠出去。
如果不設置該屬性 預設為水平。
控制項的寬高:
屬性:match_parent/fill_parent 填充父窗體(fill_parent 已棄用)
wrap_content 包裹內容
絕對數字 例如150dp
background:設置背景顏色:
出現的位數: 3/4 6/8 ARGB (alpha(透明度) red green blue)
#00ffffff 完全透明
#ffffffff 完全不透明
#88ffffff 半透明
#fff 白色 ffffff
#000 黑色
#f00 紅色
#0f0 綠色
#00f 藍色
#ccc 灰色 333 666 999
屬性:
android:layout_gravity(內對外的請求) 用於控制項相對於外層容器的對齊方式
可選值:top, bottom, left(start),right(end),center_vertical垂直居中,center_horizontal水平居中,center水平垂直都居中。
註意:在垂直線性佈局裡面:top, bottom,center_vertical 無效center 在垂直方向無效。
水平線性佈局裡面: left(start),right(end),center_horizontal 無效,center在水平方向無效。
android:gravity(外對內的要求)控制視圖容器內容物的位置 和本身的水平垂直屬性不衝突
可選值:top, bottom, left(start),right(end),center_vertical垂直居中,center_horizontal水平居中,center水平垂直都居中。
layout_gravity:是定義控制項位置。
gravity:是定義控制項裡面的內容的位置。如果定義在佈局中,則整體控制項按照其定義的位置放置。
權重:android:layout_weight 他是用於分配剩餘空間的屬性,
註意:
在水平方向設置權重:要把寬度設置為0dp ,
在垂直方向設置權重的時候要把 高度設置為0dp
如果設置wrap_content 會對權重有干擾
相對佈局RelativeLayout:
屬性主要分為四大類
1、相對於父元素:七個屬性:
是否讓控制項相對於父元素頂部對齊:android:layout_alignParentTop
是否讓控制項相對於父元素底部對齊:android:layout_alignParentBottom
是否讓控制項相對於父元素左邊對齊:android:layout_alignParentLeft
是否讓控制項相對於父元素右邊對齊:android:layout_alignParentRight
全居中 :centerInParent
水平居中:layout_centerHorizontal
垂直居中:layout_centerVertical
2、相對於兄弟元素 4個
layout_above; 指定在那個控制項的上側
layout_below 指定在那個控制項的下側
android:layout_toLeftOf layout_toStartOf 指定在那個控制項的左側,api版本17推薦使用
android:layout_toRightOf layout_toEndOf 指定在那個控制項的右側,api版本17推薦使用
3、相對於兄弟元素的對齊方式
layout_alignLeft 該控制項的左邊與指定控制項的左邊對齊
layout_alignRight 該控制項的右邊與指定控制項的右邊對齊
layout_alignTop 該控制項的上邊沿與指定控制項的上邊沿對齊
layout_alignBottom 該控制項的下邊沿與指定控制項的下邊沿對齊
4、間隔
paddingXXX 內邊距 (不指定方向,四周都有)
layout_marginXXX 外邊距 (不指定方向,四周都有)
幀佈局FrameLayout:
幀佈局主要用於碎片fragment的主佈局。
以上就是佈局的學習內容,我認為難點在於線性佈局中的layout_gravity和gravity