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
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 »
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) {
}
});
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.