Mostrar la vista cuando la barra de herramientas se derrumba
Tengo una actividad con un CoordinatorLayout
, AppBarLayout
, CollapsingToolbarLayout
y Toolbar
. Por lo tanto, básicamente, una vista que se colapsa al desplazar un RecyclerView
.
Lo que necesito hacer es mostrar una vista personalizada cuando la vista del diseño expandido se oculta debido al colapso.
- CollapsingToolbarLayout | Aspectos de desplazamiento y diseño
- Cómo ocultar la barra de herramientas después de colapsar mientras que recyclerView desplazamiento hacia abajo
- Colapsar el diseño de la barra de herramientas con pestañas, contraer la barra de herramientas sólo cuando las pestañas alcancen la barra de herramientas en android
- Agregar FloatingActionButton en el diseño de barra de herramientas de contracción
- Cómo eliminar programaticamente un comportamiento de diseño de mi NestedScrollView?
Este es mi diseño:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="192dp" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="#2196F3" app:expandedTitleMarginBottom="32dp" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <include android:id="@+id/header" layout="@layout/header_big_first_screen" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:scaleType="centerCrop" app:layout_collapseMode="parallax"/> <android.support.v7.widget.CollapsingToolbarLayout android:id="@+id/anim_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Hello!"/> </android.support.v7.widget.CollapsingToolbarLayout> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/categories_recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout>
Al final, cuando se expande la barra de herramientas, se muestra la vista cargada con el elemento. Cuando se derrumba no lo hace. Cuando desaparece el TextView
dentro de la Toolbar
debe ser mostrado. Actualmente se muestra todo el tiempo.
He estado buscando en los eventos de CollapsingToolbarLayout
para añadir un oyente cuando cambia de tamaño para que pueda comprobar si es más pequeño que un valor y mostrar esa vista.
Esto puede ser un poco complicado de explicar, pero creo que me he hecho claro. He estado buscando en Google y no puedo encontrar a nadie tratando de hacer lo mismo.
- Android CollapsingToolbarLayout colapse Listener
- PreferenceFragment no scroll en CollapsingToolbarLayout
- Cheesesquare: enterAlways produce un diseño incorrecto
- Viewpager no se desplaza en el diseño del coordinador
- Barra de herramientas de despliegue. Cómo adaptar el diseño personalizado en lugar del predeterminado ImageView
- Vista de desplazamiento superpuesta con AppBarLayout
- Prevenir CollapsingToolbarLayout colapsar si no es necesario
- Establecer la altura de inicio de CollapsingToolbarLayout
Echando un vistazo a la fuente CollapsingToolbarLayout
, las animaciones de scrim de contenido se activan a través de OnOffsetChangedListener
en AppBarLayout
. Así que puedes añadir otro para activar animaciones alfa en tu vista de texto:
mListener = new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { if(collapsingToolbar.getHeight() + verticalOffset < 2 * ViewCompat.getMinimumHeight(collapsingToolbar)) { hello.animate().alpha(1).setDuration(600); } else { hello.animate().alpha(0).setDuration(600); } } }; appBar.addOnOffsetChangedListener(mListener);