Android xml 佈局
阿新 • • 發佈:2019-01-02
首先按照程式的目錄結構大致分析:
res/layout/ 這個目錄存放的就是佈局用的xml檔案,一般預設為main.xml
res/values/ 這個目錄存放的是一堆常量的xml檔案
res/drawable/ 存放的是一些圖片什麼的,當然圖示也在這裡
下面主要對layout下的xml檔案做個介紹,順便也把佈局的方法總結一下:
·檔案的開頭
<?xml version="1.0" encoding="utf-8"?>
這是在說明xml版本及字元編碼
·緊接著到了關鍵的部分:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/ android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
其中開頭的"LinearLayout"是佈局的方式,可以有很多種,最常用的應該就是Linear了,其他的佈局方法等下在後面總結。
接著android:layout_width(height)="wrap_content"是在設定這部分佈局的寬高,也可以是絕對值,當然設定為絕對值時要標上單位。
·在<LinearLayout ...>和</LinearLayout>就之間可以新增控制元件了,比如要新增一個名字為btn的Button控制元件,並且Button上顯示的文字是"Test!",可以這樣寫:
<Button id="@+id/btn"
android:text="Test!"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
開頭id後面的就是控制元件名稱,在用於新增事件Listener時會用到,而下幾行的android:xxx就是設定控制元件的屬性了,這些屬性在Android的文件中都有,不需要特別去記,一般現查就可以了。
·有一點要說明的是,佈局方法可以巢狀,有點像java中的Container,可以非常方便的把介面“堆”出來。
佈局方式的簡單說明:
查了Android文件發現佈局確實很多,只列出兩個我自己認為較常用的:
·LinearLayout線性的佈局方式,要麼上下,要麼左右的新增控制元件,很常用;
·GridView中文翻譯過來是網格佈局,控制元件按照順序依次填到每個格子裡就好了,出來的介面會很整齊,較常用;
具體的幾個佈局如下:
@ <1> LinearLayout(線性佈局)提供了控制元件水平垂直排列的模型,同時可以通過設定子控制元件的weight佈局引數控制各個控制元件在佈局中的相對大小。水平(vertical)垂直(horizontal)
fill-parent:佔滿整個螢幕,wrap-content:剛好適合控制元件內容的大小
對齊方式gravity取值:
top:不改變大小,位置置於容器的頂部
bottom:不改變大小,位置置於容器的底部
left:不改變大小,位置置於容器的左邊
right:不改變大小,位置置於容器的右邊
center_vertical:不改變大小,位置置於容器的縱向中央部分
center_horizontal:不改變大小,位置置於容器的橫向中央部分
center:不改變大小,位置置於容器的橫向和縱向的中央部分
fill_vertical:可能的話,縱向延伸可以填滿容器
fiil_horizontal:可能的話,橫向延伸可以填滿容器
fiil:可能的話,縱向和橫向延伸填滿容器
@<2> AbsoluteLayout(座標佈局)可以讓子元素指定準確的x/y座標值,並顯示在螢幕上。(0, 0)為左上角,當向下或向右移動時,座標值將變大。AbsoluteLayout沒有頁邊框,允許元素之間互相重疊(儘管不推薦)。我們通常不推薦使用AbsoluteLayout,除非你有正當理由要使用它,因為它使介面程式碼太過剛性,以至於在不同的裝置上可能不能很好地工作。
Android:layout_x/layout_y=”56px”確定控制元件位置
@<3> RelativeLayout(相對佈局)允許子元素指定他們相對於其它元素或父元素的位置(通過ID指定)。因此,你可以以右對齊,或上下,或置於螢幕中央的形式來排列兩個元素。元素按順序排列,因此如果第一個元素在螢幕的中央,那麼相對於這個元素的其它元素將以螢幕中央的相對位置來排列。如果使用XML來指定這個layout,在你定義它之前,被關聯的元素必須定義。
Android:layout_centerInparent, 將當前控制元件放置於起父控制元件的橫向和縱向的中央部分 Android:layout_centerHorizontal, 使當前控制元件置於父控制元件橫向的中央部分
Android:layout_centerVertival, 使當前控制元件置於父控制元件縱向的中央部分
Android:layout_alignParentLeft, 使當前控制元件的左端和父控制元件左端對齊
Android:layout_alignParentRight, 使當前控制元件的右端和父控制元件右端對齊
Android:layout_alignParentTop, 使當前控制元件的頂端和父控制元件頂端對齊
Android:layout_alignParentBottom,使當前控制元件的底端和父控制元件底端對齊
上述屬性只能設定Bool型別的值,“true”或“false”
Android:layout_below/layout_above/ layout_toLeftOf/ layout_toRightOf =“@id/”使當前控制元件置於給出id的空間的下方/上方/左邊/右邊
Android:layout_marginBottom/layout_marginLeft/layo ut_marginRight/layout_marginTop=”30px”使當前控制元件底部/左邊/右邊/頂部空出相應畫素空間
@<4> FrameLayout(單幀佈局)是最簡單的一個佈局物件。它被定製為你螢幕上的一個空白備用區域,之後你可以在其中填充一個單一物件— 比如,一張你要釋出的圖片。所有的子元素將會固定在螢幕的左上角;你不能為FrameLayout中的一個子元素指定一個位置。後一個子元素將會直接在前一個子元素之上進行覆蓋填充,把它們部份或全部擋住(除非後一個子元素是透明的)。
res/layout/ 這個目錄存放的就是佈局用的xml檔案,一般預設為main.xml
res/values/ 這個目錄存放的是一堆常量的xml檔案
res/drawable/ 存放的是一些圖片什麼的,當然圖示也在這裡
下面主要對layout下的xml檔案做個介紹,順便也把佈局的方法總結一下:
·檔案的開頭
<?xml version="1.0" encoding="utf-8"?>
這是在說明xml版本及字元編碼
·緊接著到了關鍵的部分:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/ android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
其中開頭的"LinearLayout"是佈局的方式,可以有很多種,最常用的應該就是Linear了,其他的佈局方法等下在後面總結。
接著android:layout_width(height)="wrap_content"是在設定這部分佈局的寬高,也可以是絕對值,當然設定為絕對值時要標上單位。
·在<LinearLayout ...>和</LinearLayout>就之間可以新增控制元件了,比如要新增一個名字為btn的Button控制元件,並且Button上顯示的文字是"Test!",可以這樣寫:
<Button id="@+id/btn"
android:text="Test!"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
開頭id後面的就是控制元件名稱,在用於新增事件Listener時會用到,而下幾行的android:xxx就是設定控制元件的屬性了,這些屬性在Android的文件中都有,不需要特別去記,一般現查就可以了。
·有一點要說明的是,佈局方法可以巢狀,有點像java中的Container,可以非常方便的把介面“堆”出來。
佈局方式的簡單說明:
查了Android文件發現佈局確實很多,只列出兩個我自己認為較常用的:
·LinearLayout線性的佈局方式,要麼上下,要麼左右的新增控制元件,很常用;
·GridView中文翻譯過來是網格佈局,控制元件按照順序依次填到每個格子裡就好了,出來的介面會很整齊,較常用;
具體的幾個佈局如下:
@ <1> LinearLayout(線性佈局)提供了控制元件水平垂直排列的模型,同時可以通過設定子控制元件的weight佈局引數控制各個控制元件在佈局中的相對大小。水平(vertical)垂直(horizontal)
fill-parent:佔滿整個螢幕,wrap-content:剛好適合控制元件內容的大小
對齊方式gravity取值:
top:不改變大小,位置置於容器的頂部
bottom:不改變大小,位置置於容器的底部
left:不改變大小,位置置於容器的左邊
right:不改變大小,位置置於容器的右邊
center_vertical:不改變大小,位置置於容器的縱向中央部分
center_horizontal:不改變大小,位置置於容器的橫向中央部分
center:不改變大小,位置置於容器的橫向和縱向的中央部分
fill_vertical:可能的話,縱向延伸可以填滿容器
fiil_horizontal:可能的話,橫向延伸可以填滿容器
fiil:可能的話,縱向和橫向延伸填滿容器
@<2>
Android:layout_x/layout_y=”56px”確定控制元件位置
@<3> RelativeLayout(相對佈局)允許子元素指定他們相對於其它元素或父元素的位置(通過ID指定)。因此,你可以以右對齊,或上下,或置於螢幕中央的形式來排列兩個元素。元素按順序排列,因此如果第一個元素在螢幕的中央,那麼相對於這個元素的其它元素將以螢幕中央的相對位置來排列。如果使用XML來指定這個layout,在你定義它之前,被關聯的元素必須定義。
Android:layout_centerInparent, 將當前控制元件放置於起父控制元件的橫向和縱向的中央部分 Android:layout_centerHorizontal, 使當前控制元件置於父控制元件橫向的中央部分
Android:layout_centerVertival, 使當前控制元件置於父控制元件縱向的中央部分
Android:layout_alignParentLeft, 使當前控制元件的左端和父控制元件左端對齊
Android:layout_alignParentRight, 使當前控制元件的右端和父控制元件右端對齊
Android:layout_alignParentTop, 使當前控制元件的頂端和父控制元件頂端對齊
Android:layout_alignParentBottom,使當前控制元件的底端和父控制元件底端對齊
上述屬性只能設定Bool型別的值,“true”或“false”
Android:layout_below/layout_above/ layout_toLeftOf/ layout_toRightOf =“@id/”使當前控制元件置於給出id的空間的下方/上方/左邊/右邊
Android:layout_marginBottom/layout_marginLeft/layo ut_marginRight/layout_marginTop=”30px”使當前控制元件底部/左邊/右邊/頂部空出相應畫素空間
@<4>