android基礎學習之布局,android基礎布局
我學習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