2013年5月1日水曜日

Layout とは何者か

ADT で Blank layout を選ぶと、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="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

一番上は ******Layout じゃないとダメなんだろうか?

そもそも Layout とは何なのか・・・。

Android Developers - Layouts
http://developer.android.com/guide/topics/ui/declaring-layout.html


簡単にまとめてみると
  • レイアウトはアプリのUIやウィジットのUIを決めるもの
  • XMLで書ける
  • XMLの要素名が View のクラス名に、属性名がメソッド名に一致する(例外有り)
  • 画面の向き、デバイスのサイズ、言語別にレイアウトを作成できる
  • 必ず1つのルート要素を持つ

更にリンクを辿っていくと、疑問に思っていたことを発見。

Android Developers - Layout Resource
http://developer.android.com/guide/topics/resources/layout-resource.html

Note: The root element can be either a ViewGroup, a View, or a <merge> element, but there must be only one root element and it must contain the xmlns:android attribute with the android namespace as shown.

一番上に来るのは、ViewGroup か View を継承しているクラスなら何でもいいみたいです。ただし、ルート要素で名前空間を指定する必要あり。

じゃあ Layout は ViewGroup のサブクラスなのかと思ったらその通りでした。

Android Developers - ViewGroup
http://developer.android.com/reference/android/view/ViewGroup.html


で、その ViewGroup は View のサブクラスでした。

Android Developers -View
http://developer.android.com/reference/android/view/View.html

View が一番上にいるようです。

ということで Layout 以外でも一番上に来ていいことがわかりました。



ちなみに、各 Layout についてはこちらがわかりやすかったです

@IT - Androidアプリの使いやすさを左右する5つのレイアウト
http://www.atmarkit.co.jp/fsmart/articles/android05/android05_1.html

0 件のコメント:

コメントを投稿