レイアウト リソース
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
レイアウト リソースは、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
属性をルート要素に格納する必要があります。上記の構文をご覧ください。
- 要素:
-
<ViewGroup>
- 他の
View
要素のコンテナ。ViewGroup
オブジェクトにはさまざまな種類があり、それぞれが異なる方法で子要素のレイアウトを指定できます。ViewGroup
オブジェクトの主な種類としては、LinearLayout
、RelativeLayout
、FrameLayout
などがあります。ViewGroup
の種類によって、受け入れ可能なネストされたビューが異なります。たとえば、AdapterView
クラス実装のビューグループの場合、子は Adapter
から渡されたものだけに限られます。
属性:
android:id
- リソース ID。要素を示す一意のリソース名。アプリから
ViewGroup
への参照を取得する際に使用します。詳しくは、android:id の値のセクションをご覧ください。
android:layout_height
- ディメンションまたはキーワード。必須。グループの高さを、ディメンション値(ディメンション リソース)またはキーワード(
"match_parent"
または "wrap_content"
)として指定します。詳しくは、android:layout_height と android:layout_width の値のセクションをご覧ください。
android:layout_width
- ディメンションまたはキーワード。必須。グループの幅を、ディメンション値(ディメンション リソース)またはキーワード(
"match_parent"
または "wrap_content"
)として指定します。詳しくは、android:layout_height と android:layout_width の値のセクションをご覧ください。
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_height と android:layout_width の値のセクションをご覧ください。
android:layout_width
- ディメンションまたはキーワード。必須。要素の幅を、ディメンション値(ディメンション リソース)またはキーワード(
"match_parent"
または "wrap_content"
)として指定します。詳しくは、android:layout_height と android:layout_width の値のセクションをご覧ください。
View
基本クラスでは、ほかにもさまざまな属性がサポートされています。また、View
の各実装では、さらに多くの属性がサポートされています。詳細については、レイアウトをご覧ください。利用可能なすべての属性のリファレンスについては、各リファレンス ドキュメント(たとえば、TextView
XML 属性)をご覧ください。
<requestFocus>
View
オブジェクトを示す任意の要素内に、この空要素を格納することができます。これにより、親要素に画面上の初期フォーカスが与えられます。この要素は、ファイルごとに 1 つだけ指定することができます。
<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
を使用することもできます。これは、明示的にインフレートするまでレイアウト スペースを消費しない軽量のビューです。これを使用すると、android:layout
属性によって定義されているレイアウト ファイルが組み込まれます。ViewStub
の使用方法については、オンデマンドでビューをロードするをご覧ください。
<merge>
- レイアウト階層内に描画されない代替ルート要素。
<merge>
要素の子を格納する親 View
をすでに組み込んでいるレイアウト内に、このレイアウトを配置することを把握している場合は、この要素をルート要素として使用すると便利です。
この方法は、<include>
を使用してこのレイアウトを別のレイアウト ファイル内に組み込む予定があり、このレイアウトが別の ViewGroup
コンテナを必要としない場合に、特に便利です。レイアウトのマージの詳細については、<include> を使用してレイアウトを再利用するをご覧ください。
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);
}
- 関連項目:
-
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2024-09-20 UTC。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"必要な情報がない"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"複雑すぎる / 手順が多すぎる"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"最新ではない"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻訳に関する問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"サンプル / コードに問題がある"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"その他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"わかりやすい"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"問題の解決に役立った"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"その他"
}]
{"lastModified": "\u6700\u7d42\u66f4\u65b0\u65e5 2024-09-20 UTC\u3002"}
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2024-09-20 UTC。"]]