web-dev-qa-db-ja.com

垂直DrawerLayoutまたはSlidingPaneLayout

最新の AndroidサポートライブラリDrawerLayout を導入し、左右にスライドしてナビゲーションメニューを表示する一般的なUXパターンを実装します。

私が持ちたいのは、同じAPIを持つ垂直 DrawerLayoutであり、これはレイアウトの上部/下部。

4.2以降、古い SlidingDrawer は廃止され、同じ機能を実装する新しいウィジェットについて聞いたことがありません。

DrawerLayoutを何らかの方法で拡張して、垂直スワイプUXパターンを実装できますか? Googleはそれを実装するためにいくつかの異なるウィジェットを提供していますか?

Google Music たとえば、プレーヤーを引き上げるために実装しようとしているものに非常に似たものがあります。

enter image description here

40
Mario Lenci

最近、これをUmanoアプリに実装し、オープンソースにしました: https://github.com/umano/AndroidSlidingUpPanel

楽しい。

45
tokudu

Androidサポートライブラリには、これを行うためのボトムシートの動作があります。

詳細については、このリンクをご覧ください https://material.google.com/components/bottom-sheets.html

12
Distwo

最近では、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に追加します。

1
xarlymg89