Quiero implementar el patrón 'Espacio flexible con contenido superpuesto' de las técnicas de desplazamiento de Material design , como en este video :
Mi diseño XML ahora se ve así:
<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 una manera fácil de lograr esto usando la Biblioteca de diseño? ¿O tengo que crear un CoordinatorLayout.Behavior personalizado para hacer esto?
android
android-design-library
android-collapsingtoolbarlayout
Ianhanniballake
fuente
fuente
Respuestas:
De hecho, superponer la vista de desplazamiento con AppBarLayout es una característica incluida de la Biblioteca de compatibilidad de diseño de Android : puede usar el
app:behavior_overlapTop
atributo en suNestedScrollView
(o en cualquier Vista que use ScrollingViewBehavior ) para establecer la cantidad de superposición:Tenga en cuenta que
app:behavior_overlapTop
solo funciona en vistas que tienen elapp:layout_behavior="@string/appbar_scrolling_view_behavior"
comportamiento que utiliza el atributo (no la Vista ni el Grupo de vistas principal, como se suelen aplicar los atributos), de ahí elbehavior_
prefijo.O configúrelo programáticamente a través de setOverlayTop () :
fuente
layout_behavior
ybehavior_overlapTop
) termina detrás de su hermano AppBarLayout. Intenté cambiar el orden en el XML, pero no parece tener ningún efecto. ¿Alguna idea de cuál podría ser el problema?error no resource identifier found for attribute behavior_overlayTop
behavior_overlapTop
perosetOverlayTop()
- superposición vs superposición. ¡Asegúrate de usar el correcto!Además de la respuesta aceptada , llame a setTitleEnabled (false) en su CollapsingToolbarLayout para que el título permanezca fijo en la parte superior como en el ejemplo.
Me gusta esto:
o agregándolo en xml como este:
De lo contrario, el título podría desaparecer detrás del contenido superpuesto, a menos que, por supuesto, ese sea el comportamiento que desea.
fuente