用布局(layout)資源
布局資源是Android中最常使用的一種資源,android可以將屏幕中組件的布局方式定義在一個XML文件中,這有點像web開發中的Html頁面。我們可以調用Activity.setContentVIEw()方法,將布局文件展示在Activity上。android通過LayoutInflater類將XML文件中的組件解析為可視化的視圖組件。布局文件保存在res\layout\文件夾中,文件名稱任意。
布局文件的定義我們將通過表來說明布局文件的定義情況。
表布局文件的定義
資源位置
res/layout/my_layout.XML(文件名稱任意)
布局XML文件格式
使用<?XML version="1.0" encoding="utf-8"?><布局類 XMLns:android="http://schemas.android.com/apk/res/android" id="@+id/string_name" (屬性)><視圖組件或者其他嵌套布局類><requestFocus/></布局類>
獲得XML資源的方法
Activity.setContentVIEw()
引用XML資源的格式
Java代碼中:R.layout.my_layoutXML文件中:@[package:]layout/my_layout
下面通過一個實例來演示布局文件的用法。該實例定義一個布局文件,在該布局文件中添加一個TextView、一個EditText和一個Button,分別設置其屬性,並且使用Activity.setContentView()方法將其設置為Activity的界面,使用findVIEwById()方法來得到布局中的組件。
在工程的res\layout\目錄下創建一個test_layout.XML布局文件,在該布局文件中使用LinearLayout嵌套TableLayout進行布局管理,其中添加TextVIEw、EditText和Button三個視圖組件,並為其設置屬性。
Java代碼:
- <?XML version="1.0" encoding="utf-8"?>
- <LinearLayout XMLns:android="http://schemas.android.com/apk/res/android" android:orIEntation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <!-- 以上四個屬性分別是命名空間、 組件布局方向(這裡是垂直)、布局的寬(充滿屏幕)和高(充滿屏幕)-->
- <!-- 以下嵌套一個TableLayout -->
- <TableLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:stretchColumns="1">
- <TableRow>
- <TextVIEw
- android:text="測試Layout:" android:id="@+id/layoutTextVIEw01" android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="@color/red_bg"/>
- <!-- 以上五個屬性分別是:文本內容、引用組件的ID、該組件的寬(內容的寬)、該組件的高(內容的高)、文件顏色 -->
- <EditText
- android:text=""
- android:id="@+id/EditText01"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
- </TableRow>
- <TableRow
- android:gravity="right">
- <Button
- android:text="Test"
- android:id="@+id/layoutButton01"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- </TableRow>
- </TableLayout>
- </LinearLayout>
在工程的com.amaker.ch03.layout包中創建一個TestLayoutActivity類,在該類的頂部聲明TextView、EditText和Button。在onCreate()方法中定義setContentView()方法,將布局文件設置為Activity的界面,使用findVIEwById()方法實例化以上三個視圖組件。
Java代碼:
- package eoe.demo.layout;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextVIEw;
- import com.amaker.test.R;
- public class TestLayoutActivity extends Activity {
- private TextView myTextVIEw;
- private EditText myEditText;
- private Button myButton;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // 設置Activity的界面布局
- setContentVIEw(R.layout.test_layout);
- // 通過findViewByIdff獲得TextVIEw實例
- myTextView = (TextView)findViewById(R.id.layoutText VIEw01);
- // 通過findVIEwById方法獲得EditText實例
- myEditText = (EditText)findVIEwById(R.id.layoutEdit Text01);
- // 通過findVIEwById方法獲得Button實例
- myButton = (Button)findVIEwById(R.id.layoutButton01);
- }
- }