レイアウト リソースは、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>
要素のいずれかを使用できますが、ルート要素は 1 つだけに限られます。また、android
名前空間を持つxmlns:android
属性をルート要素に格納する必要があります。上記の構文をご覧ください。 - 要素:
-
android:id の値
ID 値には通常、次の例のように
"@+id/name"
の構文形式を使用します。プラス記号(+
)は、これが新しいリソース ID であることを示し、aapt
ツールがR.java
クラス内に新しいリソース整数を作成します(まだ存在しない場合)。<TextView android:id="@+id/nameTextbox"/>
nameTextbox
名は、この要素にアタッチされたリソース ID です。これにより、Java 内で、ID が関連付けられているTextView
を参照できるようになります。Kotlin
val textView: TextView? = findViewById(R.id.nameTextbox)
Java
TextView textView = findViewById(R.id.nameTextbox);
このコードは、
TextView
オブジェクトを返します。すでに ID リソースを定義済みの場合(そして、まだ使用していない場合)は、
android:id
値内のプラス記号を除外することで、その ID をView
要素に適用できます。android:layout_height と android:layout_width の値
高さと幅の値は、Android でサポートされているディメンション単位(px、dp、sp、pt、in、mm)を使用するか、以下のキーワードを使用して表現します。
値 説明 match_parent
親要素のディメンションと一致するようにディメンションを設定します。サポートが終了した fill_parent
の後継として、API レベル 8 で追加されました。wrap_content
この要素のコンテンツに適合するうえで必要最小限のサイズに設定します。 カスタムビュー要素
カスタム
View
要素やカスタムViewGroup
要素を作成して、標準レイアウト要素と同じようにレイアウトに適用することができます。また、XML 要素でサポートされている属性を指定することもできます。詳細については、カスタムビュー コンポーネントを作成するをご覧ください。 - 例:
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
のレイアウトをロードします。-
Kotlin
public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) }
Java
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); }
- 関連項目: