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);
}
參閱