ViewGroupの中で使い道が無いと思われるものの一つとしてFrameLayoutを挙げることができるのではないだろうか。ここでは、このFrameLayoutの活用方法を無理矢理考える。
様々なViewを配置した場合、個々のViewの縦幅が異なるため、見た目が不細工になる。
個々のViewの縦幅を統一する簡便な方法として、FrameLayoutを用いる方法がある。
FrameLayoutの中に、表示したいViewと共に、縦幅が最も高いViewをダミーで挿入するのである。
ダミーViewを挿入するため、無駄なresourceを設けることにはなるが、作成が簡単であるため、試作品の作成には向いている。
ここでは静的な揃え方を書きましたが、動的に揃える書き方は、起動直後にViewのサイズを動的に変更するに書きました。
下記の例では、TextViewとSeekBarとSpinnerの3個のViewの高さを、全て、Spinnerの高さと同じ高さに揃えている。
高さ調整のため、 TextViewとSeekBarに対にしたSpinnerを非表示にしている。
<?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"
>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:layout_gravity="center_vertical"
>
</TextView>
<Spinner
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
>
</Spinner>
</FrameLayout>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
>
</SeekBar>
<Spinner
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
>
</Spinner>
</FrameLayout>
<Spinner
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</Spinner>
</LinearLayout>
0 件のコメント:
コメントを投稿