1. 程式人生 > >Android官方文件—APP資源(Resource Types) (Layout)

Android官方文件—APP資源(Resource Types) (Layout)

佈局資源

佈局資源定義Activity或UI元件中UI的體系結構。

檔案位置:

res/layout/filename.xml

檔名將用作資源ID。

編譯資源資料型別:     指向View(或子類)資源的資源指標。 資源參考:     在Java中:R.layout.filename     在XML中:@ [package:] layout / filename

語法:

<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][package:]id/resource_name"
    android:layout_height=["dimension" | "match_parent" | "wrap_content"]
    android:layout_width=["dimension" | "match_parent" | "wrap_content"]
    [ViewGroup-specific attributes] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [View-specific attributes] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource"/>
</ViewGroup>

注意:根元素可以是ViewGroup,View或<merge>元素,但必須只有一個根元素,並且它必須包含帶有android名稱空間的xmlns:android屬性,如圖所示。

元素:

<ViewGroup>

其他View元素的容器。有許多不同型別的ViewGroup物件,每個物件都允許您以不同的方式指定子元素的佈局。不同種類的ViewGroup物件包括LinearLayout,RelativeLayout和FrameLayout。

您不應該假設ViewGroup的任何派生都將接受巢狀檢視。一些ViewGroups是AdapterView類的實現,它僅從介面卡確定其子節點。

屬性:

android:id

資源ID。元素的唯一資源名稱,可用於從應用程式獲取對ViewGroup的引用。有關android:id的更多資訊,請參閱下面的內容。

android:layout_height

維度或關鍵字。必要。組的高度,作為維值(或維度資源)或關鍵字(“match_parent”或“wrap_content”)。請參閱下面的有效值。

android:layout_width

維度或關鍵字。必要。組的寬度,作為維值(或維度資源)或關鍵字(“match_parent”或“wrap_content”)。請參閱下面的有效值。

ViewGroup基類支援更多屬性,ViewGroup的每個實現都支援更多屬性。有關所有可用屬性的參考,請參閱ViewGroup類的相應參考文件(例如,LinearLayout XML屬性)。

<View>

單個UI元件,通常稱為“小部件”。不同種類的View物件包括TextView,Button和CheckBox。

屬性:

android:id

資源ID。元素的唯一資源名稱,可用於從應用程式獲取對View的引用。有關android:id的更多資訊,請參閱下面的內容。

android:layout_height

維度或關鍵字。必要。元素的高度,作為維度值(或維度資源)或關鍵字(“match_parent”或“wrap_content”)。請參閱下面的有效值。

android:layout_width

維度或關鍵字。必要。元素的寬度,作為維度值(或維度資源)或關鍵字(“match_parent”或“wrap_content”)。請參閱下面的有效值。

View基類支援更多屬性,View的每個實現都支援更多屬性。閱讀佈局瞭解更多資訊。有關所有可用屬性的參考,請參閱相應的參考文件(例如,TextView XML屬性)。

<requestFocus>

表示View物件的任何元素都可以包含此空元素,該元素在螢幕上顯示其父物件的初始焦點。每個檔案只能包含其中一個元素。

<include>

在此佈局中包含佈局檔案。

屬性:

layout

佈局資源。需要。引用佈局資源。

android:id

資源ID。覆蓋包含在佈局中的根檢視的ID。

android:layout_height

維度或關鍵字。覆蓋包含的佈局中給根檢視的高度。僅在聲明瞭android:layout_width時才有效。

android:layout_width

維度或關鍵字。覆蓋包含的佈局中給根檢視的寬度。僅在聲明瞭android:layout_height時才有效。

您可以在<include>中包含所包含佈局中根元素支援的任何其他佈局屬性,它們將覆蓋根元素中定義的那些屬性。

警告:如果要使用<include>標記覆蓋佈局屬性,則必須覆蓋android:layout_height和android:layout_width,以使其他佈局屬性生效。

包含佈局的另一種方法是使用ViewStub。它是一個輕量級的View,在你明確地膨脹它之前不會佔用任何佈局空間,此時它包含一個由android:layout屬性定義的佈局檔案。有關使用ViewStub的更多資訊,請閱讀按需載入檢視。

<merge>

未在佈局層次結構中繪製的備用根元素。當您知道此佈局將放置在已包含相應父檢視的佈局中以包含<merge>元素的子元素時,將此作為根元素非常有用。當您計劃使用<include>將此佈局包含在另一個佈局檔案中時,這尤其有用,並且此佈局不需要不同的ViewGroup容器。有關合並佈局的更多資訊,請閱讀使用<include />重新使用佈局。

android:id的值

對於ID值,通常應使用以下語法形式:“@ + id / name”。加號+表示這是一個新的資源ID,aapt工具將在R.java類中建立一個新的資源整數(如果它尚不存在)。例如:

<TextView android:id="@+id/nameTextbox"/>

nameTextbox名稱現在是附加到此元素的資源ID。然後,您可以引用與Java關聯的ID的TextView:

findViewById(R.id.nameTextbox);

此程式碼返回TextView物件。

但是,如果您已經定義了ID資源(並且尚未使用它),則可以通過排除android:id值中的加號來將該ID應用於View元素。

android的值:layout_height和android:layout_width:

高度和寬度值可以使用Android支援的任何維度單位(px,dp,sp,pt,in,mm)或以下關鍵字表示:

Value Description
match_parent 設定維度以匹配父元素的維度。在API級別8中新增以棄用fill_parent。
wrap_content 僅將尺寸設定為適合此元素內容所需的尺寸。

自定義檢視元素

您可以建立自己的自定義View和ViewGroup元素,並將它們作為標準佈局元素應用於佈局。您還可以指定XML元素中支援的屬性。有關詳細資訊,請參閱Custom Components開發人員指南。

例子:

儲存在res / layout / main_activity.xml的XML檔案:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

此應用程式程式碼將在onCreate()方法中載入Activity的佈局:



    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
    }

參閱