【Kotlin/Android】BottomSheetBehaviorの使い方!下部から表示するモーダルビュー

この記事からわかること
- Android Studio/KotlinのBottomSheetBehaviorの使い方
- 下部から表示するモーダルビューを実装する方法
- 状態変化とスライド中の値の変化を観測するには?
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Androidでモーダルビューを実装する方法
Androidで下部から迫り上がってくるようなモーダルビューを実装するにはBottomSheetBehavior
を使用します。BottomSheetBehavior
はマテリアルデザインとして用意されているビューです。
モーダルビューはスライドジェスチャーでコントロールすることが可能で、上にスライドすると全画面に、下にスライドすると非表示にすることができます。

実装手順
BottomSheetBehavior
を使用してモーダルビューを実装する手順をまとめていきます。
- CoordinatorLayoutで大枠を囲う
- LinearLayoutにBottomSheetBehaviorを設定する
「build.gradle(Module:App)」に以下がなければ追加しておく必要があります。
1.CoordinatorLayoutで大枠を囲う
BottomSheetBehavior
を使用するにはCoordinatorLayout
を使用する必要があります。CoordinatorLayout
は子ビュー間の動作を調整するためのUIコンテナです。
これが画面の大枠のUIレイアウトになります。
2.LinearLayoutにBottomSheetBehaviorを設定する
次にボトムシートのレイアウトを実装します。ボトムシートにするためにはapp:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
を指定します。
これだけでボトムシート(モーダルビュー)の実装が完了です。

ボトムシートの高さを指定する
ボトムシートの高さを指定するにはapp:behavior_peekHeight
属性を使用します。
下スワイプで非表示になるようにする
ボトムシートを下スワイプで非表示になるようにするにはapp:behavior_hideable
属性を使用します。
Kotlinから操作する
BottomSheetBehavior
をKotlinから操作するにはまずボトムシートのレイアウトを取得しBottomSheetBehavior.from
メソッドを使用して参照を取得できます。
ボタン押下で表示させる
ボタンを押下した際にボトムシートを表示させたい場合はstate
を変更します。
値 | 状態 |
---|---|
STATE_DRAGGING | 掴んで移動中 |
STATE_SETTLING | STATE_EXPANDED、STATE_COLLAPSEDへの遷移中 |
STATE_EXPANDED | 全画面表示 |
STATE_COLLAPSED | 縮小化(peekHeightの高さ)で表示 |
STATE_HIDDEN | 非表示 |
状態変化とスライド中の値の変化を観測する
状態変化とスライド中の値の変化を観測するにはaddBottomSheetCallback
を使用します。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。