移動測試之Android基本佈局

一、佈局的介紹:【瞭解】
1、在4.0以前版本中一共有五種佈局,都是ViewGroup的子類。分別是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子類。(中文分別是:絕對佈局、相對佈局、線性佈局、幀佈局、表格佈局)。
2、在2.2操作系統中將AbsoluteLayout過期。而目前FrameLayout、TableLayout也逐漸少用。
3、在4.0之後又新增GridLayout。(GridLayout最經典的案例是計算器界面)
總之,Android中一共有六種佈局。目前推薦使用RelativeLayout、LinearLayout、GridLayout三種佈局。

二、View類的常用xml屬性:
(一)、類結構:
java.lang.Object
   ↳  android.view.View

(二)、View及其子元素常用屬性:(各種佈局及控件的共同屬性)
android:id
android:background 
android:onClick     爲該控件的單擊事件綁定監聽器
android:padding    設置控件四周的填充區域
android:visibility    設置該控件是否可見(invisible/visible/gone)
android:alpha        設置該組件透明度
android:layout_height      子組件的佈局高度
android:layout_width        子組件的佈局寬度
android:layout_margin     設置子組件的外邊距

三、LinearLayout:【掌握】
(一)、概念:線性佈局控制其中的控件或組件橫向或縱向排列。不線性佈局佈局中,每一行或每一列只能放一個控件。並且線性佈局不會換行。當控件排列到窗體邊緣,後面的控件就被隱藏,而不會顯示出來。
線性佈局的默認方向是水平方向(Horizontal)。

(二)、LinearLayout的常用屬性:
1.android:orientation     定義佈局內控件或組件的排列方式
可選項:vertical 、 horizontal

2.android:layout_width    定義控件的寬度
可選項:fill_parent / match_parent/ wrap_content/絕對數值
備註:fill_parent / match_parent的效果完全一致,都是填充整個父控件。但是自2.2版本開始推薦使用match_parent 。wrap_content指的是該控件的寬度正好包裹內容物。

3.android:layout_height    定義控件的高度
可選項:fill_parent / match_parent/ wrap_content/絕對數值
備註:fill_parent / match_parent的效果完全一致,都是高度填充整個父控件。wrap_content指的是該控件的高度正好包裹內容物。

4.android:id   設置控件的id。這樣就可以在R.java中自動生成相應的值,在程序中通過findViewById就可以調用。
設置id的格式爲:android:id = "@+id/id的名字"

5.android:background     設置控件的背景顏色或背景圖片
例如:android:background="#ffffff"
          android:background="@drawable/圖片名稱"
【備註:】
顏色有RGB顏色格式和ARGB格式。RGB是紅綠藍三原色。而ARGB是帶alpha的三原色,即有透明度的三原色。
#FFFFFF 代表白色
#000000  黑色
#FFFFFFFF   完全不透明
#00FFFFFF   完全透明
#88FFFFFF   半透明

6.android:layout_weight    設置控件的權重。即各控件在水平或者垂直方向上平均分配。
備註:如果是水平方向設置權重,要將android:layout_width設置爲0dp,如果是垂直方向上使用權重,要將android:layout_height設置爲0dp。否則權重容易受到高度或寬度的干擾而出現偏差。

7.android:gravity   該屬性用來控制該View的內容物的位置。
如果該屬性是定義在佈局節點中,則該佈局中所有控件的位置都受到這個屬性的控制。
如果該屬性出現在Button、TextView、EditText等控件中,則用來控制這些控件上的文字的位置。
可選項有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。
【備註:】本屬性與android:layout_gravity不同。

8.android:layout_gravity   該屬性用於設置控件相對於容器的對齊方式。
可選項有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。
這些可選項中不是適用於每一種佈局。在垂直線性佈局中,android:gravity爲bottom不起作用;而水平線性佈局中,android:gravity爲right不起作用。
【備註:】而本屬性是android:layout_gravity屬性,與 android:gravity 屬性不同。

(三)、LinearLayout的特有屬性:【重新歸納:去除公共屬性後的特有屬性】
1、android:orientation    佈局管理器內組件的排列方式
2、android:gravity    設置佈局管理器內組件的對齊方式

(四)、 LinearLayout 子元素的特有屬性:
1、android:layout_weight    子元素在 LinearLayout 中所佔的權重
2、android:layout_gravity     子元素在 LinearLayout 中的對齊方式

四、RelativeLayout:【掌握】
(一)、概念:指按着控件之間的相對位置來進行佈局。

(二)、RelativeLayout特有屬性:
1、android:gravity    設置佈局容器內子控件的對齊方式    
2、android:ignoreGravity    設置佈局管理器內哪個控件不受gravity屬性的影響

(三)、RelativeLayout子元素的特有屬性:LayoutParams
    A、第一組:指兄弟控件之間的相對位置。該組屬性的值是另一個控件的id。
layout_toRightOf      該控件在哪個控件的右側
layout_toLeftOf        該控件在哪個控件的左側
layout_above           該控件在哪個控件的上側
layout_below            該控件在哪個控件的下側

    B、第二組:指兄弟控件之間的對齊關係。該組屬性的值是另一個控件的id。
layout_alignRight      該控件與哪個控件的右對齊
layout_alignLeft        該控件與哪個控件的左對齊
layout_alignTop        該控件與哪個控件的頂對齊
layout_alignBottom   該控件與哪個控件的底對齊

    C、第三組:指控件與父佈局之間的對齊關係。該組屬性的值是true或者false。
layout_alignParentRight               該控件與父佈局控件的右對齊嗎?
layout_alignParentLeft                 該控件與父佈局控件的左對齊嗎?
layout_alignParentTop                 該控件與父佈局控件的頂端對齊嗎?
layout_alignParentBottom            該控件與父佈局控件的底部對齊嗎?
layout_centerInParent                  該控件位於父佈局控件的中心位置嗎?
layout_centerVertical                    該控件位於父佈局控件的垂直中心位置嗎?
layout_centerHorizontal                該控件位於父佈局控件的水平中心位置嗎?

【備註:】sp、dp、dip、pt、px等單位的區別?
dpi    dpi指像素密度。dots per inch  ,即每英寸內像素點的個數。它不是表示長度的單位。在android中認爲:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。隨着技術的增長,實際dpi已經超出這個定義範圍。
dip    device independent pixels  ,即與設備無關的像素。目前這個單位已經被dp所取代,而不建議使用dip。
dp     與dip的概念一樣。不過dp已經取代了dip。在Android中用來表示非文字大小的尺寸。例如:外邊距、內填充等。
sp      scale  independent  pixel  ,即與縮放比例無關的像素。在android中常用來表示文字大小。
px      表示像素。因爲同樣是200px,但是在不同手機下顯示的大小是不同的。
pt      point磅。1磅=1/74英寸
總之:dp是用來定義非文字的尺寸,sp用來定義文字大小。px只用於產生一條一像素的分割線時使用。

五、GridLayout:網格佈局
(一)、GridLayout佈局屬性:
1、android:alignmentMode
屬性說明:設置佈局的對齊模式。可以取以下值:
alignBounds -- 對齊子視圖邊界。
alignMargins -- 對齊子視圖邊距。

2、android:columnCount
屬性說明:GridLayout的最大列數

3、android:rowCount
屬性說明:GridLayout的最大行數

4、android:orientation
屬性說明:GridLayout中子元素的佈局方向。有以下取值:
horizontal -- 水平佈局。
vertical -- 豎直佈局。

5、android:columnOrderPreserved
屬性說明: 設置該網格佈局是否保留列序號。默認是true。

6、android:rowOrderPreserved
屬性說明: 設置該網格佈局是否保留行序號。默認是true。

7、android:useDefaultMargins
屬性說明: 設置GridLayout使用默認的邊距。默認值是false。

(二)、GridLayout子元素的屬性:
1、android:layout_column
屬性說明: 顯示該控件的列。例如,android:layout_column="0",表示在第1列顯示該控件;android:layout_column="1",表示在第2列顯示該控件。

2、android:layout_row
屬性說明: 該控件所在行。例如,android:layout_row="0",表示在第1行顯示該控件;android:layout_row="1",表示在第2行顯示該控件。它和 android:layout_column類似。

3、android:layout_columnSpan
屬性說明: 列合併。即該控件所佔的列數。例如,android:layout_columnSpan="2",表示該控件佔2列。
 
4、android:layout_rowSpan
屬性說明: 行合併。即該控件所佔的行數。例如,android:layout_rowSpan="2",表示該控件佔2行。

5、android:layout_gravity
屬性說明:該控件的佈局方式。選項值:
top                      -- 控件置於容器頂部,不改變控件的大小。
bottom                -- 控件置於容器底部,不改變控件的大小。
left                     -- 控件置於容器左邊,不改變控件的大小。
right                   -- 控件置於容器右邊,不改變控件的大小。
center_vertical     -- 控件置於容器豎直方向中間,不改變控件的大小。
fill_vertical          -- 如果需要,則往豎直方向延伸該控件。
center_horizontal -- 控件置於容器水平方向中間,不改變控件的大小。
fill_horizontal      -- 如果需要,則往水平方向延伸該控件。
center                -- 控件置於容器中間,不改變控件的大小。
fill                     -- 如果需要,則往水平、豎直方向延伸該控件。
clip_vertical        -- 垂直剪切,剪切的方向基於該控件的top/bottom佈局屬性。若該控件的gravity是豎直的:若它的gravity是top的話,則剪切該控件的底部;若該控件的gravity是bottom的,則剪切該控件的頂部。
clip_horizontal     -- 水平剪切,剪切的方向基於該控件的left/right佈局屬性。若該控件的gravity是水平的:若它的gravity是left的話,則剪切該控件的右邊;若該控件的gravity是  right的,則剪切該控件的左邊。
start                  -- 控件置於容器的起始處,不改變控件的大小。
end                   -- 控件置於容器的結束處,不改變控件的大小。

編輯:千鋒軟件測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章