android - scrollflags - collapsingtoolbarlayout import
Vista de desplazamiento superpuesta con AppBarLayout (2)
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:
CollapsingToolbarLayout.setTitleEnabled(false);
o agregándolo en xml así:
app:titleEnabled="false"
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.
Quiero implementar el patrón ''Espacio flexible con contenido superpuesto'' de las técnicas de desplazamiento de diseño de materiales , 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>
¿Hay una manera fácil de lograr esto usando la Biblioteca de diseño? ¿O tengo que crear un CoordinatorLayout.Behavior personalizado para hacer esto?
De hecho, la superposición de la vista de desplazamiento con AppBarLayout es una característica incluida de la
Biblioteca de soporte de diseño de Android
: puede usar el atributo
app:behavior_overlapTop
en su
NestedScrollView
(o cualquier vista que use
ScrollingViewBehavior
) para establecer la cantidad de superposición:
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:behavior_overlapTop="64dp">
Tenga en cuenta que
app:behavior_overlapTop
solo funciona en vistas que tienen la
app:layout_behavior="@string/appbar_scrolling_view_behavior"
ya que es el Comportamiento que utiliza el atributo (no View o Parent ViewGroup, ya que los atributos generalmente se aplican), de ahí que
behavior_
prefijo.
O setOverlayTop() mediante programación a través de setOverlayTop() :
NestedScrollView scrollView = ...
CoordinatorLayout.LayoutParams params =
(CoordinatorLayout.LayoutParams) scrollView.getLayoutParams();
AppBarLayout.ScrollingViewBehavior behavior =
(AppBarLayout.ScrollingViewBehavior) params.getBehavior();
behavior.setOverlayTop(128); // Note: in pixels