android--Layout(佈局)

LinearLayout

(線性佈局)
定義:
LinearLayout是線性佈局控件,它包含的子控件將以橫向或者豎向的方式排列
LinearnLayout本身常用到的兩個屬性:
1:
android:orientation=”vertical”/”horizontal”(這個屬性決定他子類控件的排布方式 垂直/水平)
2:
android:gravity=”center”
(這個屬性決定他子類的xy的位置)
經常用到的幾個屬性值:
center_vertical:垂直(Y軸)居中
center_horizontal:水平(x軸)居中
center(水平垂直都居中)
right(子類控件位於當前佈局的右邊)
left(子類控件位於當前佈局的左邊)
bottom(子類控件位於當前佈局的下面)

gravity屬性是可以多級連用的:
android:gravity=”bottom/center_horizontal”
gravity屬性設置在linearLayout中表示當前佈局或者內容的位置

子類控件在LinearLayout中常用到的屬性:
android:layout_gravity=”bottom”
指的是這個子類控件本身在父容器的XY位置
android:layout_weight=”1”
指的是這個子類控件本身佔當前父容器的一個比例(比重)。

RelativeLayout

(相對佈局)
定義:
RelativeLayout是相對佈局控件,它包含的子控件將以控件之間的相對位置或者子類控件相對父類容器的位置的方式排列

子類控件在RelativeLayout中常用到的屬性(相對父容器的位置)
android:layout_alignParentLeft=”true”
(子類控件相對當前父類容器靠左邊)
android:layout_alignParentTop=”true”
(子類控件相對父類控件靠上面)
android:layout_marginLeft=”43dp”
(子類控件距離父類容器左邊的距離)
android:layout_marginTop=”33dp”
(子類控件距離父類容器上邊的距離)
android:layout_centerInParent=”true”
(子類控件相對於父類容器水平居中又垂直居中)
android:layout_centerHorizontal=”true”
(子類控件相對於父類容器水平居中)
android:layout_centerVertical=”true”
(子類控件相對於父類容器垂直居中)

FrameLayout

(幀佈局)
這個佈局中,所有的子元素都不能被放置在指定的位置,它們統統放於這塊區域的左上角,並且後面的子元素直接覆蓋在前面的子元素之上,將前面的子元素部分或者全部遮擋。
代碼示例:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_gravity="center"
        android:background="#e52b50"
        android:text="Page1"
        android:layout_width="500dp"
        android:layout_height="500dp"
        android:id="@+id/textView" />

    <TextView
        android:layout_gravity="center"
        android:background="#ffbf00"
        android:text="page2"
        android:layout_width="350dp"
        android:layout_height="350dp"
        android:id="@+id/textView2" />

    <TextView
        android:layout_gravity="center"
        android:background="#4b5320"
        android:text="page3"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:id="@+id/textView3" />

    <TextView
        android:layout_gravity="center"
        android:background="#b2beb5"
        android:text="page4"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/textView4" />
</FrameLayout>

通過幀佈局可以讓progressBar顯示文字等等。

AbsoluteLayout

(絕對佈局)
這個佈局又叫做座標佈局,可以直接指定子元素的絕對位置(xy)
但是由於手機的屏幕尺寸差別比較大,使用絕對定位適應性比較差,在屏幕適配上有缺陷。
開發中很少用到。
AbsoluteLayout子類控件的常用屬性:
android:layout_x=”35dip”
android:layout_y=”40dip”

TableLayout

(表格佈局)

TableLayout表格佈局模型以行列的形式管理子控件,每一行爲一個TableRow的對象,當然也是一個View的對象。
TableLayout的屬性(全局屬性)
android:collapseColumns:設置需要被隱藏的列的序號
android:shrinkColumns:設置允許被收縮的列的列序號
android:stretchColumns:設置運行被拉伸的列的列序號
這三個屬性的列號都是從0開始算的,比如shrinkColunmns = “2”,對應的是第三列!
可以設置多個,用逗號隔開比如”0,2”,如果是所有列都生效,則用”*”號即可
除了這三個常用屬性,還有兩個屬性,分別就是跳格子以及合併單元格,這和HTML中的Table類似:
android:layout_column=”2”:表示的就是跳過第二個,直接顯示到第三個格子處,從1開始算的!
android:layout_span=”4”:表示合併4個單元格,也就說這個組件佔4個單元格

GridLayout

(網格佈局)
這個佈局是Android 4.0以後引入的一個新的佈局,和前面所學的TableLayout(表格佈局) 有點類似,不過他有很多前者沒有的東西,也更加好用。
相關屬性總結:

設置排列方式:android:orientaion=”vertical(垂直)/horizontal(水平)”
設置對齊式:android:layout_gravity=”center/right/left/buttom”
同時兩種的話 buttom|left
設置幾行幾列:
設置行數:androidrowCount=”4”設置網格佈局有4行
設置列數:androidcolumnCount=”4”設置網格佈局有4列

設置組件所在行列(從0開始)
第幾行:androidLayout_row=”1”設置組件位於第二行
第幾列:androidLayout_column=”2”設置組件位於第三列
設置組件橫跨幾行幾列
橫跨幾行:androidLayout_rowSpan=”2”//縱向橫跨兩行
橫跨幾列:androidLayout_columnSpan=”3”//縱向跨行兩列
示例代碼:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:columnCount="4"
    android:orientation="horizontal"
    android:rowCount="6" >

    <TextView
        android:layout_columnSpan="4"
        android:layout_gravity="fill"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:background="#FFCCCC"
        android:text="0"
        android:textSize="50sp" />

    <Button
        android:layout_columnSpan="2"
        android:layout_gravity="fill"
        android:text="回退" />

    <Button
        android:layout_columnSpan="2"
        android:layout_gravity="fill"
        android:text="清空" />

    <Button android:text="+" />

    <Button android:text="1" />

    <Button android:text="2" />

    <Button android:text="3" />

    <Button android:text="-" />

    <Button android:text="4" />

    <Button android:text="5" />

    <Button android:text="6" />

    <Button android:text="*" />

    <Button android:text="7" />

    <Button android:text="8" />

    <Button android:text="9" />

    <Button android:text="/" />

    <Button
        android:layout_width="wrap_content"
        android:text="." />

    <Button android:text="0" />

    <Button android:text="=" />

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