Layoutリソース

Layoutリソースのファイルはres/layout/filename.xmlに配置します。filenameは任意の名前であり、それが「リソースID」となります

このXML形式のファイルを、レイアウト ファイル (layout file) と呼びます。

構文

<?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_width =["dimension" | "fill_parent" | "wrap_content"]
    android:layout_height=["dimension" | "fill_parent" | "wrap_content"]
    [ ViewGroup-specific attributes ] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_width =["dimension" | "fill_parent" | "wrap_content"]
        android:layout_height=["dimension" | "fill_parent" | "wrap_content"]
        [ View-specific attributes ] >
            <requestFocus />
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource" />
</ViewGroup>

「@」以下に続く文字列はリソース名を表し、「+」はそれが新しいリソースであることを意味します。Declaring Layout | Android Developers

ルート要素は、ViewGroupまたはViewクラスを継承したクラスの要素とする必要があります。

サンプルコード

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
    <TextView android:text="TextView"
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <ImageView android:src="@drawable/violet"
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <com.example.MyButton android:text="Button"
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>

独自に作成したクラスは、パッケージ名も含めて記述します。

Layoutリソースの動的な追加

ActivityクラスのgetLayoutInflater()で、LayoutInflaterクラスのインスタンスを取得します。そしてそのLayoutInflaterのinflate()を呼び出すことで、指定のViewGroupにLayoutリソースを追加できます。

public LayoutInflater getLayoutInflater ()
public View inflate (
    int resource,  // LayoutリソースのID
    ViewGroup root // 親となる要素
    )
LayoutInflater | Android Developers

サンプルコード

ViewGroup viewGroup = (ViewGroup) findViewById(R.id.WidgetID);

getLayoutInflater().inflate(R.layout.ResourceID, viewGroup);
Androidの情報サイトから、まとめて検索