線形レイアウト

LinearLayout は、すべての子ビューを、垂直または水平の一方向にそろえるビューグループです。 android:orientation 属性によってレイアウトの方向を指定することができます。

LinearLayout のすべての子ビューは順にスタックされるので、垂直方向のリストには、幅に関係なく、1 つの行に 1 つの子ビューしかありません。一方、水平方向のリストは、1 行分の高さしかありません(最も高い子ビューの高さ + パディング)。 LinearLayout は子ビュー間の「マージン」と、それぞれの子ビューの「グラビティ」(右揃え、中央揃え、左揃え)を遵守します。

レイアウト ウェイト

LinearLayout では、android:layout_weight 属性を持つ個々の子ビューへの weight も指定します。この属性は、画面上で占めるスペースという観点で「重要度」を表す値をビューに指定します。 この weight 値が大きいほど、親ビューの残りのスペースを埋めるように拡大されます。子ビューに weight 値を設定することで、ビューグループの残りのスペースを、宣言されたウェイトの割合に応じて割り当てることができます。 デフォルトの weight 値は 0 です。

たとえば、3 つのテキスト フィールドがあって、そのうち 2 つが weight 値に 1 を宣言し、もう 1 つが weight 値を宣言しない場合、weight 値のない 3 番目のテキスト フィールドは拡大せず、そのコンテンツが必要とする面積だけを占めます。 他の 2 つで、3 つのフィールドすべてのサイズを決めた後で残るスペースを等分します。 3 番目のフィールドの weight 値を(0 ではなく)2 とすると、他の 2 つのフィールドよりも重要度が高いと宣言したことになるので、残りのスペース全体の半分を占めます。他の 2 つのフィールドはその残りを等分します。

<?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 で詳細をご確認ください。