最新の Androidサポートライブラリ は DrawerLayout を導入し、左右にスライドしてナビゲーションメニューを表示する一般的なUXパターンを実装します。
私が持ちたいのは、同じAPIを持つ垂直 DrawerLayoutであり、これはレイアウトの上部/下部。
4.2以降、古い SlidingDrawer は廃止され、同じ機能を実装する新しいウィジェットについて聞いたことがありません。
DrawerLayout
を何らかの方法で拡張して、垂直スワイプUXパターンを実装できますか? Googleはそれを実装するためにいくつかの異なるウィジェットを提供していますか?
Google Music たとえば、プレーヤーを引き上げるために実装しようとしているものに非常に似たものがあります。
最近、これをUmanoアプリに実装し、オープンソースにしました: https://github.com/umano/AndroidSlidingUpPanel
楽しい。
Androidサポートライブラリには、これを行うためのボトムシートの動作があります。
詳細については、このリンクをご覧ください https://material.google.com/components/bottom-sheets.html
最近では、BottomSheetBehavior
を使用するほうが理にかなっています。この変数の設定方法の詳細については、 https://code.tutsplus.com/articles/how-to-use-bottom-sheets-with- the-design-support-library--cms-26031
基本的に、メインコンテンツとスライドコンテンツを設定する必要があります。 BottomSheetBehavior
は、下から上にスライドするパネルでのみ機能します。
セットアップは非常に簡単で、BottomSheetBehavior
はそのまま使用できます。 Android.support.design.widget.CoordinatorLayout
レイアウトを記述し、内部に別のビューを(wrap_content
パラメータの値としてlayout_height
を使用して)書き込むことによってのみ、たとえば次のようなLinearLayout
を使用できます。
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
app:behavior_hideable="true"
app:behavior_peekHeight="56dp"
app:layout_behavior="Android.support.design.widget.BottomSheetBehavior">
<!-- Your content goes here -->
</LinearLayout>
</Android.support.design.widget.CoordinatorLayout>
私の場合、このレイアウトをFragment
に展開し、Activity
を有効にするSlidingSheetBehavior
に追加します。