2.2:XMLについて
XMLとは?
ExtensibleMarkupLanguageの略であり、 情報を入れておくデータベース。
アンドロイドアプリのレイアウトに使用されているだけではなく、
Webページなど幅広く使われています。
アンドロイドアプリにおいてXMLを使用する場合は、主にこの2点があげられるかと思います。
- レイアウトファイル
- (文字の)データベース
というわけで、それぞれの使い方を簡単に見ていきましょう。
ではこの画面にしてください。
左の activity_main.xml をクリックしても構いませんし、 すでに開かれている場合は上の方にタブがあるので そのactivity_main.xml をクリックしても構いません。
ではこの画面にしていただきましたが、これは何の画面でしょうか?
このページはGUIと言って、どのような配置になるか大まかに設定することが出来、
難しいプログラミングを書かなくても簡単にボタンを配置することができます。
※配置してもボタンの動作をJAVAで書かないとボタンを配置しても何も動きません。
ですので直感的にレイアウトは作れますが、せっかくなので詳しい話を。
下の activity_main.xml をクリックしてみましょう。
このような画面が表示されましたね。
これはGUI画面を実際にプログラムに書くとこのように書かなければいけないのです。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world" /> </RelativeLayout>
ではそれぞれの簡単に解説を、
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
ー画面レイアウトを作るときの最低限必要な箇所
RelativeLayout
-レイアウトの形式です。他には Linear Layout 等があります。
また他の形式を使うことになった時に説明します。
android:layout_width="match_parent"
android:layout_height="match_parent"
ーアプリの幅指定。
android:layout_width android:layout_height 英語ですがそのまま横幅 縦幅。
その横にある match_parent は大きさの指定です。他にも自分で値を設定したりもできます。
tools:context=".MainActivity"
-画面レイアウトの名前
代表的な値の指定方法を書いておきます。
match_parent | 画面の幅いっぱい。 |
---|---|
fill_parent | 画面の幅いっぱい。上と同じ。 |
wrap_content | 幅を自動指定 |
XXXpx | 自分で 200pxなど指定できる。 ペイントやワードや画像などでみなさんが普段PCで見ている値はこれだと思います。 スマホにおいてはこの設定方法はおすすめできません。 スマホは解像度や画面のサイズがバラバラのため、機種によっても大幅に表示が変わるからです。 |
XXXdp | スマホによってばらばらになるpxの変わりとなる. 機種によらずだいたいおなじになる これから一番使うかもしれない大きさの設定方法。 主にボタンや画像を使うときに使用。 |
XXXsp | dpと同じ。 こちらは主に文字の大きさを設定するときに使用。 |
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world" />
ーテキスト表示するためのもの(テキストボックス)。
android:~で詳細設定をしている感じ。
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- わかるかもしれませんが、テキストボックスの幅の設定。
この場合は自動設定なので文字の大きさや文字数で幅が自動的に変わります。
android:layout_centerHorizontal="true"
ーこの場合はテキストボックスをRelativeLayoutの横幅が中央になるように配置します。
trueでそうする。 falseでそうしない。
中央に配置しない場合はこの行は消せばいいだけですが。
堅苦しく言うと 子クラスを親クラスの中央に配置する。 などなど
android:layout_centerVertical="true"
上の縦バージョンです。もう言うことなし。
android:text="@string/hello_world"
文字内容 テキストに表示する文字。 テキストボックスに入れる文字。 などなど
@string/hello_world" これは@がつくことによりどこかを参照しているということになります。
では左側のvaluesフォルダのstring.xmlを開いてみましょう。
このような画面になるはずです。下の画面のようにstring.xmlを押します。
写真は省略。
<?xml version="1.0" encoding="utf-8"?> <resources> s <string name="app_name">Hello</string> <string name="hello_world">Hello world!</string> <string name="menu_settings">Settings</string> </resources>
このようなかんじになってますね。
管理人ははじめメニューバーを作ってしまったため、行が多いかもしれません。
"@string/hello_world"
もう気がついた方がいらっしゃるのではないでしょうか?
string.xmlのhelloworldの箇所のHello world!が表示されている。
そのため、
<TextView
android:text="@string/hello_world" />
これは、string.xmlの名前hello_worldという部分の箱に入っているHello world!をテキストビューに
表示させるということになります。
ちなみにandroid:text="Hello world!"これでも普通に動きますが、セキュリティ上の観点からか、
警告マークが出ます。