2010年09月21日

[Android] 2つのViewを両端に配置する方法

2つのViewを画面の両端に配置したいということはよくあると思います。
テキストビューとチェックボックスとか、イメージビューとテキストビューとか。

これまでこういったときはRelativeLayoutを使うもんだとばかり思っていましたが、Googleさんのソースを眺めていたら、別の方法を見つけました。
こんな風にしても書けるんだ、と感心してしまいました。

http://android.git.kernel.org/?p=platform/packages/apps/Email.git

ここで使われているレイアウトはRelativeLayoutではなく、LinearLayoutです。
LinearLayoutは左右のどちらかに詰めて配置するためのレイアウトだと思っていましたが、この方法を使うと画面の両端に配置することができます。
やり方は簡単で、両端に配置したい2つのビューの間にViewを配置するだけ。
実際に書くと↓な感じ。

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
>
<ImageView
android:src="@drawable/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1"
/>
<TextView
android:text="Hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

ss.png
一番のポイントは、Viewにlayout_weight="1"が設定されていることだと思います。
この設定のおかげで、2つのビューの間の詰め物みたいになるのでしょう。
こんな方法があるというのもスゴいと思ったのですが、Viewをそのままタグとして使えるということにもびっくりしました。
ほんとにAndroidはまだまだ知らないことでいっぱいです。

たぶん、プロジェクトを見なくても↑の説明だけで十分だと思いますが、一応サンプルも置いておきます。
↓どうぞお使いください。
LinearLayoutTest.zip
posted by t2low at 01:25| Android