在Android應用中一個螢幕的視圖通常是通過載入自一個XML資源檔,這個XML檔案就是布局資源檔。一個布局資源也是通過ID號在R.java中標識,代碼中使用布局資源如下:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the layout for this activity. You can find it // in res/layout/hello_activity.xml setContentView(R.layout.hello_activity); }
setContentView(R.layout.hello_activity);指出Activity的視圖來自/res/layout/hello_activity.xml的布局資源檔
內容例如:
<?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" > <TextView android:id="@+id/text1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/b1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@+string/hello" /> </LinearLayout>
這裡用到了線性頁面配置LinearLayout,這是Android中最常用的布局,表示布局中的組件按一個一行的顯示出來。
常用的布局還有FrameLayout(架構布局)、TableLayout(表格版面配置)、AbsoluteLayout(絕對位置布局)、RelativeLayout(相對位置布局)。
FrameLayout、LinearLayout、AbsoluteLayout、RelativeLayout均是android.view.ViewGroup的子類。
TableLayout則是LinearLayout的子類,用表格來排列組件,如果TableLayout中的組件沒有放入TableRow的話,那麼就會按LinearLayout顯示。
AbsoluteLayout則根據設定好的座標定位顯示,AbsoluteLayout中兩個重要屬性是:android:layout_x組件在螢幕中的X座標,android:layout_y組件在螢幕中的Y座標。
RelativeLayout是按照相對於某個組件的位置來進行布局的,也就是說參考某個組件,置於此組件的上、下、左、右。
FrameLayout則是一個比較特殊的布局,是多個組件靠左上方疊加放置。