BottomSheetBehaviorでモーダル画面を表示する2017年04月09日(編集2017年04月09日)TweetAndroidアプリ開発でも、メニューやダイアログでなく、WEBのようなモーダル画面を利用したい場合があります。Androidアプリでは、BottomSheetBehaviorを使ってモーダル画面を作成できます。この記事は、AndroidアプリでBottomSheetBehaviorを使ってモーダル画面を作る方法を記載した記事です。sheets)を作成するクラスです。一般的には、メニューや簡単なダイアログの代わりとして、リストやグリッドにアクションを表示するのに使います。メニューやダイアログより多くの情報を表示できます。BottomSheetBehaviorはcom.android.support:designのversion23から導入されました。アプリ設計この記事のサンプルでは、画面で日付をタップすると、画面下から出現する詳細な日付を表示するモーダル画面をBottomSheetBehaviorで作成します。Modalアプリの動画です。日付を表示するカレンダー画面をFragmentで作成し、BottomSheetBehaviorは、Fragmentを管理するActivityクラスで実装します。クラス名はBottomSheetBehaviorActivityにします。}}layoutを記述したactivity_bottom_sheet_behavior.xmlは以下のように記載します。BottomSheetBehaviorBottomSheetBehaviorは画面の下からViewを出現させるクラスです。BottomSheetBehavior.from(bottomSheet);BottomSheetBehavior.fromメソッドは、引数にviewを受け取ります。引数に渡すViewはCoordinatorLayoutのサブクラスである必要あります。</RelativeLayout></android.support.design.widget.CoordinatorLayout>CoordinatorLayoutのサブクラスでない場合は、IllegalArgumentExceptionが発生します。引数のviewはgetLayoutParamsメソッドを呼び出して、CoordinatorLayout.LayoutParamsのオブジェクトであることを確認します。BottomSheetBehaviorの状態を取得BottomSheetBehavior#getState()メソッドで現在のBottomSheetBehaviorの状態を取得することができます。BottomSheetBehaviorの状態を設定BottomSheetBehavior#setState()メソッドでBottomSheetBehaviorの状態を設定することができます。behavior.setState(BottomSheetBehavior.STATE_HIDDEN);}BottomSheetBehaviorには、5つのState定数が宣言されています。STATE_HIDDENです。STATE_HIDDENはBottomSheetBehaviorに設定したviewを非表示にします。BottomSheetBehaviorSTATE_HIDDENを有効にするには、app:behavior_hideable="true"で指定します。app:behavior_hideable="true"STATE_COLLAPSEDはBottomSheetBehaviorに設定したviewを表示します。BottomSheetBehaviorViewの位置はapp:behavior_peekHeightで指定した高さです。app:behavior_peekHeight="300dp"STATE_EXPANDEDはBottomSheetBehaviorに設定したviewを全て表示します。BottomSheetBehaviorgoogleの公式では、STATE_COLLAPSEDでViewを表示して、ユーザーがviewをスワイプさせることを推奨しています。ビルド上記のコードビルドして動作を確認します。BottomSheetBehaviorBottomSheetBehaviorでviewが表示できました。結論Androidでも、BottomSheetBehaviorを使ってWEBのようなモーダル画面を作れるようになりました。便利な機能なので、利用してみてください。