LinearLayout
は、すべての子を垂直または水平の一方向に揃えるビューグループです。android:orientation
属性でレイアウトの方向を指定できます。
注: パフォーマンスとツールのサポートを改善するには、ConstraintLayout を使用してレイアウトを作成する必要があります。

LinearLayout
のすべての子ビューは順にスタックされるので、垂直方向のリストには、幅に関係なく、1 行に 1 つの子ビューしかありません。一方、水平方向のリストは、1 行分の高さしかありません(最も高い子ビューの高さ + パディング)。LinearLayout
は子ビュー間の「マージン」と、それぞれの子ビューの「グラビティ」(右揃え、中央揃え、左揃え)を遵守します。
レイアウト ウェイト
LinearLayout
では、android:layout_weight
属性を持つ個々の子ビューへの weight の指定もサポートされます。この属性は、画面上で占めるスペースという観点で「重要度」を表す値をビューに指定します。この weight 値が大きいほど、親ビューの残りのスペースを埋めるように拡大されます。子ビューに weight 値を指定することで、ビューグループの残りのスペースを、宣言された weight の割合に応じて割り当てることができます。デフォルトの weight 値は 0 です。
均等配分
それぞれの子ビューが画面上で等しいスペースを占める線形レイアウトを作成するには、各ビューの android:layout_height
を "0dp"
(垂直レイアウトの場合)、または各ビューの android:layout_width
を "0dp"
(水平レイアウトの場合)に設定します。次に、各ビューの android:layout_weight
を "1"
に設定します。
不均等配分
子要素が画面上で異なるスペースを占める線形レイアウトを作成することもできます。
- 3 つのテキスト フィールドがあり、そのうち 2 つが weight 値に 1 を宣言し、もう 1 つが weight 値を宣言しない場合、weight 値のない 3 番目のテキスト フィールドは拡大しません。代わりに、この 3 番目のフィールドは、そのコンテンツが必要とする面積だけを占めます。他の 2 つで、3 つのフィールドすべてのサイズを決めた後で残るスペースを等分します。
- 3 つのテキスト フィールドがあり、そのうち 2 つが weight 値に 1 を宣言し、3 番目のフィールドの weight 値を(0 ではなく)2 とすると、他の 2 つのフィールドよりも重要度が高いと宣言したことになるので、残りのスペース全体の半分を占めます。他の 2 つのフィールドはその残りを等分します。
次のコード スニペットでは、レイアウト ウェイトが「メッセージ送信」アクティビティでどのように機能するかを示しています。[To] フィールド、[Subject] 行、および [Send] ボタンは、それぞれ高さを必要なだけ占有します。この設定では、メッセージ自体でアクティビティの残りの高さを占有できます。

<?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:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" > <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/to" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/subject" /> <EditText android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="top" android:hint="@string/message" /> <Button android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="right" android:text="@string/send" /> </LinearLayout>
LinearLayout
の各子ビューで利用可能な属性について詳しくは、LinearLayout.LayoutParams
をご覧ください。