with scrollflags ejemplo coordinatorlayout collapsing appbarlayout android android-design-library collapsingtoolbarlayout android-collapsingtoolbarlayout

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