どうも。どっことです。今回はFrameLayoutについて解説します。
FrameLayout
FrameLayout
はAndroidViewで使われるViewGroupの一つです。利用頻度はあまり多くありませんが、一時期まではかなり重要な使い道がありました。今回はそんなFrameLayout
の使い方について解説します。
押さえておくポイント
FrameLayout
を使うにあたって押さえておくべきポイントを解説します。
layout_gravity
- 使いどころ
layout_gravity
layout_gravity
はViewをどこに配置するかを設定するものです。LinearLayout
にもこの設定項目はありますが、LinearLayout
がorientation
の設定値にも影響する一方、FrameLayout
ではこれ一つで配置が完結します。
layout_gravity
には以下を設定することができます。|(パイプ)
で繋げることで複数設定することも可能です。
top
- FrameLayoutに対して上寄せにViewを配置します。
bottom
- FrameLayoutに対して下寄せにViewを配置します。
start
- FrameLayoutに対して左寄せにViewを配置します。
end
- FrameLayoutに対して右寄せにViewを配置します。
center_vertical
- FrameLayoutの上下中央にViewを配置します。
center_horizontal
- FrameLayoutの左右中央にViewを配置します。
center
- FrameLayoutの中央にViewを配置します。
実装サンプルを載せます。top
とstart
はViewが移動しないので省略します。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="center"
android:textSize="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
<TextView
android:text="center\nvertical"
android:textSize="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"/>
<TextView
android:text="center\nhorizontal"
android:textSize="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>
<TextView
android:text="end"
android:textSize="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"/>
<TextView
android:text="bottom"
android:textSize="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"/>
</FrameLayout>
このレイアウトのプレビューが以下になります。
使いどころ
前述した通り、FrameLayout
は使いどころが少ないViewGroupです。ただ古いアプリの場合、特にAndroidのバージョンが4.4まではLinearLayout
やRelativeLayout
にforeground
の設定がサポートされていませんでした。その時に唯一foreground
がサポートされていたViewGroupがFrameLayout
でした。Viewをタップした時にオーバーレイする形でViewの色を変えたい時はこのforeground
が唯一の解決方法ですので、そのような表示をするためにFrameLayout
が利用されていたというわけです。
まとめ
今回はFrameLayout
の使い方について解説しました。「いまさら聞けないFrameLayout」と名打ちましたが、押さえておくべきポイントは他のViewGroupより少ないので、いざ使うことになったとしても困ることは多くないでしょう。