Android Feuilles de fond persistantes


Exemple

Vous pouvez obtenir une feuille inférieure persistante associant un BottomSheetBehavior à un enfant. Vue d'un CoordinatorLayout

<android.support.design.widget.CoordinatorLayout >

    <!-- .....   -->

    <LinearLayout
       android:id="@+id/bottom_sheet"
       android:elevation="4dp"
       android:minHeight="120dp"
       app:behavior_peekHeight="120dp"
       ...
       app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

           <!-- .....   -->

       </LinearLayout>

</android.support.design.widget.CoordinatorLayout>

Ensuite, dans votre code, vous pouvez créer une référence en utilisant:

 // The View with the BottomSheetBehavior  
 View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet);  
 BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);  

Vous pouvez définir l'état de votre BottomSheetBehavior en utilisant la méthode setState () :

mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);

Vous pouvez utiliser l'un de ces états:

  • STATE_COLLAPSED : cet état réduit est la valeur par défaut et ne montre qu'une partie de la disposition en bas. La hauteur peut être contrôlée avec l'attribut app:behavior_peekHeight (la valeur par défaut est 0)

  • STATE_EXPANDED : l'état complètement développé de la feuille du bas, où soit la totalité de la feuille inférieure est visible (si sa hauteur est inférieure à celle du CoordinatorLayout ), soit la totalité du CoordinatorLayout est remplie

  • STATE_HIDDEN : désactivé par défaut (et activé avec l'attribut app:behavior_hideable ), ce qui permet aux utilisateurs de glisser le bas de la feuille pour masquer complètement la feuille du bas

Si vous souhaitez recevoir des rappels de modifications d'état, vous pouvez ajouter un BottomSheetCallback :

mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetCallback() {  
    @Override  
    public void onStateChanged(@NonNull View bottomSheet, int newState) {  
      // React to state change  
    }  
      @Override  
      public void onSlide(@NonNull View bottomSheet, float slideOffset) {  
       // React to dragging events  
   }  
 });