Vue de défilement superposée avec AppBarLayout

Je souhaite implémenter le modèle «Espace flexible avec contenu superposé» des techniques de défilement de la conception de matériaux , comme dans cette vidéo : Espace flexible avec un GIF de contenu superposé

Ma mise en page XML ressemble maintenant à:

            

Existe-t-il un moyen simple d’accomplir ceci en utilisant la bibliothèque de conception? Ou dois-je créer un CoordinatorLayout.Behavior personnalisé pour ce faire?

En fait, la superposition de la vue de défilement avec AppBarLayout est une fonctionnalité incluse de la bibliothèque de support de conception Android : vous pouvez utiliser l’atsortingbut app:behavior_overlapTop sur votre NestedScrollView (ou toute vue utilisant ScrollingViewBehavior ) pour définir la quantité de chevauchement:

  

Notez que app:behavior_overlapTop ne fonctionne que sur les vues ayant l’ app:layout_behavior="@ssortingng/appbar_scrolling_view_behavior" car c’est le comportement qui utilise l’atsortingbut (et non le View ou le ViewGroup parent, auquel les atsortingbuts s’appliquent généralement), d’où le behavior_ préfixe.

Ou définissez-le par programmation via setOverlayTop () :

 NestedScrollView scrollView = ... CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) scrollView.getLayoutParams(); AppBarLayout.ScrollingViewBehavior behavior = (AppBarLayout.ScrollingViewBehavior) params.getBehavior(); behavior.setOverlayTop(128); // Note: in pixels 

En plus de la réponse acceptée , appelez setTitleEnabled (false) sur votre CollapsingToolbarLayout pour que le titre rest fixe en haut comme dans l’exemple.

Comme ça:

 CollapsingToolbarLayout.setTitleEnabled(false); 

ou en l’ajoutant dans XML comme ceci:

 app:titleEnabled="false" 

Sinon, le titre pourrait disparaître derrière le contenu qui se chevauche, à moins bien sûr que ce soit le comportement que vous souhaitez.