【Android Studio】RelativeLayoutの使い方!相対的にビューを配置する

この記事からわかること
- Android StudioのRelativeLayoutとは?
- WidgetsとLayoutsとは?
- ビューを相対的に並べる方法
- 中心に配置するには?
- RelativeLayout.LayoutParamsで指定できる配置属性の種類
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
RelativeLayoutとは?
AndroidのRelativeLayoutとはビューを相対的に並べることができるLayoutsの1種です。AndroidではButtonやTextViewなどのビュー要素を「Widgets」と呼びます。そしてそのWidgetsを配置するためにRelativeLayout
などの「Layouts」があります。またWidgetsはLayoutsの中にしか配置することはできません。Androidのレイアウトファイルでは必ずルートにLayoutsのいずれかを指定する必要があります。
RelativeLayoutは「リラティブ(レラティブ)レイアウト」と読み、翻訳すると「相対的なレイアウト」といった意味になります。相対的の名前通りあるビューを基準とした配置方法が可能になります。ここでいうあるビューとはWidgets基準でも親となるRelativeLayout基準でも可能ということです。
相対的に配置する
RelativeLayoutを使用してWidgetsを相対的に配置してみます。レイアウトファイルを開き、左上から「RelativeLayout」を検索しRelativeLayout
を画面に追加し、さらにButton
を3つそのまま追加してみます。すると左上に3つ重なってしまいました。これをドラッグ&ドロップで配置しようとしても左上に戻り続けてしまいます。

では以下のように配置してみます。

RelativeLayoutではWidgets1つ1つに対して上下左右の4方向に明示的な数値を指定することで配置されます。そしてここでの数値は別のWidgetsまでとの距離もしくは、親となるRelativeLayoutの枠組みまでの距離になります。例えば真ん中のボタンは左右はRelativeLayoutから232
と85
の距離に、上は上のButtonBottomの138
、下は下のButtonTopの142
の距離になるように配置されます。コードを見てみると以下のようになっています。
何やらandroid:layout_XXXXXX
形式の属性がたくさん付与されています。これがRelativeLayoutで相対的に配置するために重要になってきます。
指定できる配置属性:RelativeLayout.LayoutParams
RelativeLayout.LayoutParams
とはRelativeLayoutにおいて画面上のどこにビューを配置するかを決定するためのパラメータになります。種類がたくさんあるので正確に把握したい場合は公式サイトを参考にしてください。
公式リファレンス:RelativeLayout.LayoutParams
親に対しての配置属性
属性 | 配置 |
---|---|
layout_alignParentTop | 親に対して上寄せ |
layout_alignParentBottom | 親に対して下寄せ |
layout_alignParentRight | 親に対して右寄せ |
layout_alignParentLeft | 親に対して左寄せ |
layout_centerVertical | 親に対して垂直方向中央寄せ |
layout_centerHorizontal | 親に対して水平方向中央寄せ |
layout_centerInParent | 親に対して水平垂直方向共に中央寄せ |
値にはandroid:layout_centerInParent="true"
のようにtrue
を渡します。
兄弟(別View)に対しての配置属性
属性名 | 配置方法 |
---|---|
layout_above | 指定したViewに対し上側に配置 |
layout_below | 指定したViewに対し下側に配置 |
layout_toEndOf | 指定したViewに対し右側に配置 |
layout_toStartOf | 指定したViewに対し左側に配置 |
layout_toRightOf | 指定したViewに対し右側に配置 |
layout_toLeftOf | 指定したViewに対し左側に配置 |
layout_alignRight | 指定したViewの右端とViewの右端を揃えて配置 |
layout_alignLeft | 指定したViewの左端とViewの左端を揃えて配置 |
layout_alignBottom | 指定したViewの下端とViewの下端を揃えて配置 |
layout_alignTop | 指定したViewの上端とViewの上端を揃えて配置 |
別Viewに対してはandroid:layout_above="@+id/button"
のように合わせたいViewのIDを渡してください。
実際に配置してみる
button2
を画面の中心に設置し、その周りに階段状になるようにButtonを配置してみました。

縦並び/横並びに配置する
Widgetsを横並びや縦並びにしたい場合はLinearLayout
を使用することで簡単に実装できます。

制約的に配置する
Widgetsを制約的に配置したい場合はConstraintLayout
を使用することで簡単に実装できます。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。