レイアウト リソース
レイアウト リソースは、アクティビティ内の 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
の種類によって、受け入れ可能なネスト View
が異なります。たとえば、AdapterView
クラス実装の ViewGroup
の場合、子は Adapter
から渡されたものだけに限られます。
属性:
android:id
- リソース ID。要素を示す一意のリソース名。アプリから
ViewGroup
への参照を取得する際に使用します。詳細については、下記の android:id
の値をご覧ください。
android:layout_height
- サイズまたはキーワード。必須。グループの高さを、サイズ値(サイズリソース)またはキーワード(
"match_parent"
または "wrap_content"
)として指定します。詳細については、下記の有効な値をご覧ください。
android:layout_width
- サイズまたはキーワード。必須。グループの幅を、サイズ値(サイズリソース)またはキーワード(
"match_parent"
または "wrap_content"
)として指定します。詳細については、下記の有効な値をご覧ください。
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_width
- サイズまたはキーワード。必須。要素の幅を、サイズ値(サイズリソース)またはキーワード(
"match_parent"
または "wrap_content"
)として指定します。詳細については、下記の有効な値をご覧ください。
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>
要素の子を格納する親ビューをすでに組み込んでいるレイアウト内に、このレイアウトを配置することを把握している場合は、この要素をルート要素として使用すると便利です。この方法は特に、<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 要素でサポートされている属性を指定することもできます。詳細については、カスタム コンポーネントをご覧ください。
- 例:
- 次の XML ファイルを
res/layout/main_activity.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);
}
- 関連項目:
-
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2019-12-27 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":"その他"
}]