天天看點

Android學習筆記(五):布局控件

1.LinearLayout

線性布局是程式中最常見的一種布局方式,線性布局可以分為水準線性布局和垂直線性布局兩種,通過android:orientation屬性可以設定線性布局的方向。

1)android:gravity     該屬性用于控制布局中控件的對齊方式。如果是沒有子控件的控件設定此屬性,表示其内容的對齊方式,比如說TextView裡面文字的對齊方式;若是有子控件的控件設定此屬性,則表示其子控件的對齊方式。

一定是下列常量中的一個或多個(由'|'分割).

常量 描述

top

0x30 将對象放在其容器的頂部,不改變其大小.

bottom

0x50 将對象放在其容器的底部,不改變其大小.

left

0x03 将對象放在其容器的左側,不改變其大小.

right

0x05 将對象放在其容器的右側,不改變其大小.

center_vertical

0x10 将對象縱向居中,不改變其大小.

fill_vertical

0x70 必要的時候增加對象的縱向大小,以完全充滿其容器.

center_horizontal

0x01 将對象橫向居中,不改變其大小.

fill_horizontal

0x07 必要的時候增加對象的橫向大小,以完全充滿其容器.

center

0x11 将對象橫縱居中,不改變其大小.

fill

0x77 必要的時候增加對象的橫縱向大小,以完全充滿其容器.

clip_vertical

0x80 附加選項,用于按照容器的邊來剪切對象的頂部和/或底部的内容. 剪切基于其縱向對齊設定:頂部對齊時,剪切底部;底部對齊時剪切頂部;除此之外剪切頂部和底部.

clip_horizontal

0x08 附加選項,用于按照容器的邊來剪切對象的左側和/或右側的内容. 剪切基于其橫向對齊設定:左側對齊時,剪切右側;右側對齊時剪切左側;除此之外剪切左側和右側.

2) android:layout_weight    通過設定控件的layout_weight屬性以控制各個控件在布局中的相對大小。layout_weight屬性是一個非負整數值。線性布局會根據該控件layout_weight值與其所處布局中所有控件layout_weight值之和的比值為該控件配置設定占用的區域。例如,在水準布局的LinearLayout中有兩個Button,這兩個Button的layout_weight屬性值都為1,那麼這兩個按鈕都會被拉伸到整個螢幕寬度的一半。如果layout_weight指為0,控件會按原大小顯示,不會被拉伸;對于其餘layout_weight屬性值大于0的控件,系統将會減去layout_weight屬性值為0的控件的寬度或者高度,再用剩餘的寬度或高度按相應的比例來配置設定每一個控件顯示的寬度或高度。

2.AbsoluteLayout

指定子控件的xy精确坐标的布局。絕對布局缺乏靈活性,在沒有絕對定位的情況下相比其他類型的布局更難維護。(不太推薦使用) AbsoluteLayout是絕對位置布局。在此布局中的子元素的android:layout_x和android:layout_y屬性将生效,用于描述該子元素的坐标位置。螢幕左上角為坐标原點(0,0),第一個0代表橫坐标,向右移動此值增大,第二個0代表縱坐标,向下移動,此值增大。在此布局中的子元素可以互相重疊。在實際開發中,通常不采用此布局格式,因為它的界面代碼過于剛性,以至于有可能不能很好的适配各種終端。

學習資料

3.FrameLayout

所有添加到這個布局中的視圖都以層疊的方式顯示。第一個添加的元件放到最底層,最後添加到架構中的視圖顯示在最上面。上一層的會覆寫下一層的控件。在這個布局中,整個界面被當成一塊空白備用區域,所有的子元素都不能被指定放置的位置,它們統統放于這塊區域的左上角,并且後面的子元素直接覆寫在前面的子元素之上,将前面的子元素部分和全部遮擋。

學習資料

4.Relativelayout

RelativeLayout顧名思義,相對布局,在這個容器内部的子元素們可以使用彼此之間的相對位置或者和容器間的相對位置來進行定位。

注意:不能在RelativeLayout容器本身和他的子元素之間産生循環依賴,比如說,不能将RelativeLayout的高設定成為WRAP_CONTENT的時候将子元素的高設定成為 ALIGN_PARENT_BOTTOM。

android:layout_above将該控件置于給定ID的控件之上

android:layout_below 将該控件的置于給定ID控件之下

android:layout_toLeftOf将該控件置于給定ID的控件之左

android:layout_toRightOf将該控件置于給定ID的控件之右

android:layout_alignBaseline該控件基線對齊給定ID的基線

android:layout_alignBottom 該控件于給定ID的控件底部對齊

android:layout_alignLeft該控件于給定ID的控件左對齊

android:layout_alignRight 該控件于給定ID的控件右對齊

android:layout_alignTop 該控件于給定ID的控件頂對齊

android:layout_alignParentLeft如果為True,該控件位于父控件的左部

android:layout_alignParentRight     如果為True,該控件位于父控件的右部

android:layout_alignParentTop          如果為True,該控件位于父控件的頂部

android:layout_alignParentBottom 如果為True,該控件位于父控件的底部   

android:layout_centerHorizontal     如果為True,該控件将被置于水準方向的中央

android:layout_centerInParent         如為Ture,該控件将被置于父控件水準方向和垂直方向

android:layout_centerVertical          如果為True,該控件将被置于垂直方向的中央

學習資料

5.TableLayout

表格布局是一個ViewGroup以表格顯示它的子視圖(view)元素,即行和列辨別一個視圖的位置。Android的表格布局跟HTML中的表格布局非常類似,TableRow 就像HTML表格的<tr>标記。

 定義在TableLayout整個中的:

        android:collapseColumns:隐藏指定的列

        android:shrinkColumns:收縮指定的列以适合螢幕,不會擠出螢幕

        android:stretchColumns:盡量把指定的列填充空白部分

定義在單獨控件中的屬性:

        android:layout_column:控件放在指定的列

        android:layout_span:該控件所跨越的列數

學習資料

繼續閱讀