Je souhaite implémenter le modèle `` Espace flexible avec un contenu qui se chevauche '' à partir des techniques de défilement de la conception matérielle , comme dans cette vidéo :
Ma mise en page XML ressemble maintenant à:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="192dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
app:layout_collapseMode="pin"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<....>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
Existe-t-il un moyen simple d'accomplir cela en utilisant la bibliothèque de conception? Ou dois-je créer un CoordinatorLayout.Behavior personnalisé pour ce faire?
android
android-design-library
android-collapsingtoolbarlayout
ianhanniballake
la source
la source
Réponses:
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'
app:behavior_overlapTop
attribut sur votreNestedScrollView
(ou toute vue à l'aide de ScrollingViewBehavior ) pour définir le montant de chevauchement:Notez que cela
app:behavior_overlapTop
ne fonctionne que sur les vues qui ontapp:layout_behavior="@string/appbar_scrolling_view_behavior"
comme c'est le comportement qui utilise l'attribut (pas la vue ou le groupe de vues parent, comme les attributs s'appliquent généralement), d'où lebehavior_
préfixe.Ou définissez-le par programme via setOverlayTop () :
la source
layout_behavior
etbehavior_overlapTop
) se termine derrière son frère AppBarLayout. J'ai essayé de changer l'ordre dans le XML, mais cela ne semble pas avoir d'effet. Des idées sur quel pourrait être le problème?error no resource identifier found for attribute behavior_overlayTop
behavior_overlapTop
maissetOverlayTop()
- chevauchement vs superposition. Assurez-vous que vous utilisez le bon!En plus de la réponse acceptée , appelez setTitleEnabled (false) sur votre CollapsingToolbarLayout pour que le titre reste fixe en haut comme dans l'exemple.
Comme ça:
ou en l'ajoutant en xml comme ceci:
Sinon, le titre pourrait disparaître derrière le contenu qui se chevauchent, à moins bien sûr que ce soit le comportement que vous souhaitez.
la source