"はじめてのAndroidアプリケーション"の表示文字を変える
宣言型のユーザーインターフェイス定義
ユーザーインターフェイスは、手続き型 (Procedual) と宣言型 (Declarative) の方法の二種類によって定義可能です。 手続き型というのは要はプログラムコードで定義するものです。一方、宣言型はXMLでユーザーインタフェイスを定義します。
はじめてのAndroidアプリケーションで作成したプログラムは、 Eclipseの Androidプロジェクトを作っただけで、一切コードには手を加えませんでした。 それでも、次の画面のように文字が表示されていました。
画面を見ると分かるように、 "Hello World, Hello" という文字が表示されていますが、これがどのように表示されているのか確認するところからはじめてみましょう。
XMLにユーザーインターフェイスが定義されている
前のページで作成した HelloAndroid1 プロジェクトを見ると res ディレクトリの下に、 layout ディレクトリがあり、ここに main.xml があることがわかります。
これを選択して開きます。
すると、上の画面のようなデザイナが表示されます。今はXMLの内容を確認したいので、 画面の下側の main.xml タブを選びます。(デフォルトは Graphical Layout タブです)
すると、次のような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" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
実はこれがUIを定義しているのです。
見やすくなるように要素名だけ取り出すと次のようになります。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout> <TextView/> </LinearLayout>
リニアレイアウト (LinearLayout) の中に、テキストビュー (TextView) が一つ含まれていることがわかりますね。
詳細はまた別のページで説明しますが、リニアレイアウトは縦方向または横方向に順番に要素を並べるレイアウトです。TextViewは単純な文字を表示する要素です。
TextViewの文字の値は text 属性で指定しますが、その値は "@string/hello" と指定されています。
これは res/values/strings.xml というリソースファイル内の hello という ID の値を指しています。
そこで strings.xmlを見るとその内容は、次のとおりです。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, Hello!</string> <string name="app_name">Hello Android</string> </resources>
hello は "Hello World, Hello!" と定義されていることが分かります。 画面で見えていた Hello World, Hello という文字はここからきていたのです。
ためしに、この文字を書き換えてみましょう。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">こんにちは!</string> <string name="app_name">Hello Android</string> </resources>
エミュレータでみると、確かに次のように表示が変わりました。