web-dev-qa-db-fra.com

Vertical DrawerLayout ou SlidingPaneLayout

Le dernier Android Support Library a introduit le DrawerLayout pour implémenter le modèle UX commun où vous faites glisser vers la droite ou la gauche pour afficher un menu de navigation.

Ce que j'aimerais avoir, c'est une verticale DrawerLayout avec la même API, qui peut être tirée vers le bas/haut de la haut/bas de ma mise en page.

Depuis la version 4.2, l'ancien SlidingDrawer est obsolète et je n'ai pas entendu parler d'un nouveau widget qui implémente la même fonctionnalité.

Le DrawerLayout peut-il être étendu d'une manière ou d'une autre pour implémenter le modèle UX de balayage vertical? Google fournit-il un widget différent pour l'implémenter?

Google Music , par exemple, a quelque chose de très similaire à ce que je cherche à implémenter pour tirer le lecteur.

enter image description here

40
Mario Lenci

Nous avons récemment implémenté cela dans l'application Umano et open source: https://github.com/umano/AndroidSlidingUpPanel

Prendre plaisir.

45
tokudu

La bibliothèque de support Android Android a désormais le comportement des feuilles inférieures pour ce faire.

Consultez ce lien pour plus d'informations https://material.google.com/components/bottom-sheets.html

12
Distwo

De nos jours, il est plus logique d'utiliser le BottomSheetBehavior que vous pouvez trouver plus d'informations sur la façon de le configurer sur https://code.tutsplus.com/articles/how-to-use-bottom -sheets-with-the-design-support-library - cms-26031

Fondamentalement, vous devez définir votre contenu principal et votre contenu coulissant. Le BottomSheetBehavior ne fonctionnerait que pour les panneaux que vous faites glisser de bas en haut.

Il a une configuration assez simple et le BottomSheetBehavior pourrait même fonctionner hors de la boîte. Uniquement en écrivant un Android.support.design.widget.CoordinatorLayout mise en page, avec une autre vue à l'intérieur (avec même wrap_content comme valeur dans le layout_height paramètre), par exemple un LinearLayout comme celui-ci:

<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>

Dans mon cas, je gonfle cette disposition dans un Fragment et je l'ajoute au Activity où vous souhaitez activer le SlidingSheetBehavior.

1
xarlymg89