Android ユーザーインターフェースの基礎
Androidではこれらのウィジェットは全てandroid.view.Viewクラスを継承したクラスとして定義されており、これらのウィジェットはandroid.widgetパッケージに収められています。
クラス | 機能 |
---|---|
TextView | テキストの表示 |
EditText | テキストの入力領域 |
CheckBox | チェックボックス(複数選択) |
Button | ボタン |
Spinner | リストから選択 |
RadioButton | ラジオボタン(単一選択) |
Viewはボタンやテキストボックスのような単一のウィジェトだけではなく、画面のような複数のウィジェットをまとめグループ化したものも含まれます。このようなViewをViewGroupと呼びます。ViewGroupにはRelativeLayout、LinearLayout、ScrollViewなどがあります。
「res/layout/activity_main.xml」ファイルを見てみましょう。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world" tools:context=".MainActivity" /> </RelativeLayout>
ポイントとなるのは、ViewとViewGroupによって構成されるユーザインターフェースは必ず単一のツリー構造になるということです。
この例では、親がRelativeLayout、子がTextViewという作りになっています。前回までにグラフィカル・レイアウトでButton等を追加してある場合は、RelativeLayoutの中(TextViewの下に)Buttonが追加されているはずです。
また、View(ViewGroupも含みます)はどのようなViewなのか、どこに配置するかといったレイアウトに関する設定を行うことができます。これらの情報はLayoutParamsクラスが保持しており、XMLで定義する場合は「android:layout_xxxx」という属性が該当します。たとえば、「android:layout_width」はViewの横幅を設定するための属性で、「fill_parent」を指定した場合は親要素の横幅に合わせることを意味します。
- XMLファイルで定義する方法
- Javaプログラムで定義する方法
これまでレイアウトXMLファイルである「activity_main.xml」に手を加え(Buttonを追加して)、画面が変わることを確認しました。この方法は「XMLファイルで定義する方法」にあたります。
この方法で用いるレイアウトXMLファイルは「res/layout/」ディレクトリ以下に作成しなくてはいけません。