第 3 章 ユーザーインターフェース 25
3.8 レイアウト
class Man { String name;
int income;
Man(String aname, int aincome) { name = aname;
income = aincome;
}
public String toString() {
return name + "(年収" + income + "万円)";
}public String getName() { return name;
}public int getIncome() { return income;
} }
これで完成です。実行すると、スピナーが表示されて、それによって選択されているオブジェ クトについてのメッセージが、その下に表示されるはずですので、スピナーの右端にある逆三角 形のボタンをクリックしてみてください。そうすると、ドロップダウンリストが表示されるはず ですので、選択されている項目以外の項目をクリックしてみてください。そうすると、スピナー で選択されている項目が変更されて、その下のメッセージも変化するはずです。
3.8. レイアウト 43
3.8.4 リニアレイアウト
リニアレイアウトは、ウィジェットを一列に並べるレイアウトです。並べる方向は、垂直また は水平のどちらかです。
プロジェクトを作成したときに自動的に生成されるレイアウトXMLは、リニアレイアウトを 使っています。
リニアレイアウトは、LinearLayoutという要素型の要素を書くことによって作ることができ ます。
LinearLayout要素は、android:orientationという属性を持っています。これは、ウィジェ ットを配置する方向を指定するための属性で、次のどちらかの値を設定することができます。
horizontal 水平方向。デフォルト。
vertical 垂直方向。
リニアレイアウトを構成するウィジェットは、要素を書いた順番のとおりに、方向が水平の場 合は左から右へ、方向が垂直の場合は上から下へ並びます。
リニアレイアウトは、これまでに作成したアプリケーションでも使われていますが、これまで は、垂直方向にウィジェットを並べるという使い方しかしていませんでした。そこでここでは、
水平方向にもウィジェットを並べるアプリケーションを作ってみることにしましょう。
まず最初に、次のようなプロジェクトを作成してください。
Project name linear
Application name リニアレイアウト Package name org.example.linear Create Activity LinearActivity
次に、レイアウトXMLを次のように書き換えてください。
レイアウトXMLの例 main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
<Button>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ボタン1"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
><Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ボタン2"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ボタン3"
/>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ボタン4"
/>
</LinearLayout>
これで完成です。ボタン2とボタン3は、水平方向に並んでいるはずです。
3.8.5 テーブルレイアウト
テーブルレイアウトは、水平と垂直の両方向にウィジェットを整列させるレイアウト、つまり、
二次元の升目の上にウィジェットを並べることによって表の形を作るレイアウトです。
テーブルレイアウトにおいて、水平方向のウィジェットの並びは「行」(row)と呼ばれ、垂直 方向のウィジェットの並びは「列」(column)と呼ばれます。
行は、TableRowという要素型の要素を書くことによって作ることができます。この要素の子
供として、ウィジェットを作る要素を何個か書くと、それらのウィジェットから構成される行が できます。行を構成するウィジェットは、要素を書いた順番のとおりに、左から右へ並びます。
通常、レイアウトXMLでウィジェットを作るときは、
android:layout_width android:layout_height
という属性に属性値を設定する必要があるわけですが、行を構成するウィジェットを作る場合、
これらの属性に属性値を設定する必要はありません。
テーブルレイアウトは、TableLayoutという要素型の要素を書くことによって作ることができ ます。この要素型の要素の子供として、何個かのTableRow要素を書けば、それらのTableRow 要素によって作られた行から構成されるテーブルレイアウトができます。テーブルレイアウトを 構成する行は、要素を書いた順番のとおりに、上から下へ並びます。
TableLayout要素は、android:stretchColumnsという属性を持っています。これは、特定 の列の幅を可能な限り左右に広げる属性です。属性値として列の番号を設定すると、その番号の 列の横幅が可能な限り拡張されます(番号をコンマで区切ることによって、複数の番号を設定す ることもできます)。列の番号は、左から右へ向かって、0、1、2、……というように与えられて います。
それでは、テーブルレイアウトを使ったアプリケーションを作ってみましょう。
まず最初に、次のようなプロジェクトを作成してください。
Project name table
Application name テーブルレイアウト Package name org.example.table Create Activity TableActivity
次に、レイアウトXMLを次のように書き換えてください。
レイアウトXMLの例 main.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1"
<TableRow>>
<Button android:text="ボタン1"/>
<Button android:text="ボタン2"/>
<Button android:text="ボタン3"/>
</TableRow>
<TableRow>
<Button android:text="ボタン4"/>
<Button android:text="ボタン5"/>
<Button android:text="ボタン6"/>
</TableRow>
</TableLayout>
これで完成です。6個のボタンが、2行3列の表の形で並んでいるはずです。また、1番目の列
(中央の列)の幅が、可能な限り左右に拡張されているはずです。
3.8.6 絶対レイアウト
絶対レイアウトは、個々のウィジェットの絶対的な位置を指定することによってウィジェット を配置するレイアウトです。
3.9. トースト 45