2016-09-17 2 views
0

Pouvons-nous créer une mise en page où nous avons un aperçu de recyclé au-dessus d'une vue de dessous cachée de sorte que chaque fois que la feuille de fond glisse et se dilate, le recyclair s'aligne juste au-dessus de la feuille inférieure et ne pas se cacher derrière.Placer une liste/recycler sur une feuille de fond

Répondre

0

Oui, vous pouvez y parvenir. Assurez-RelativeLayout comme la mise en page de parent puis ajoutez comprennent votre point de vue/mise en page, et attribuer la propriété alignParentBottom = « true ». Ensuite, inclure votre RecyclerView et ajoutez layout_above = « included_layout_id »

0

J'enveloppé mon contenu vue à l'intérieur d'une autre vue (rootContent) uniquement pour la portée pour obtenir la hauteur, mais vous pouvez l'obtenir d'une meilleure manière. Puis dans le BottomSheetCallback

mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet); 

    mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { 
     @Override 
     public void onStateChanged(@NonNull View bottomSheet, int newState) { 
      if(newState == BottomSheetBehavior.STATE_COLLAPSED){ 
       content.getLayoutParams().height = rootContent.getHeight(); 
      }else { 
       content.getLayoutParams().height = rootContent.getHeight() - bottomSheet.getHeight(); 
      } 
      content.requestLayout(); 
     } 

     @Override 
     public void onSlide(@NonNull View bottomSheet, float slideOffset) { 

     } 
    }); 
1

Oui, vous pouvez le faire. Il vous suffit d'utiliser le BottomSheetCallback sur votre BottomSheetBehavior, comme ceci:

bottomSheetBehavior = BottomSheetBehavior.from(yourLayoutWithBottomSheetBehavior); 
bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { 

    @Override 
    public void onStateChanged(@NonNull View bottomSheet, int newState) { 

    } 

    @Override 
    public void onSlide(@NonNull View bottomSheet, float slideOffset) { 

     CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) yourRecyclerView.getLayoutParams();   
     layoutParams.height = bottomSheet.getTop(); 
     yourRecyclerView.setLayoutParams(layoutParams);   
     yourRecyclerView.requestLayout(); 
}); 

Dans la méthode onSlide vous obtenez toujours la partie supérieure actuelle de la feuille inférieure si vous changez l'état ou faites-le glisser.