Android CollapsingToolbarLayout colapse Listener

Estoy utilizando CollapsingToolBarLayout junto con AppBarLayout y CoordinatorLayout , y están trabajando bien por completo. Puse mi Toolbar de Toolbar para ser fijado cuando me desplácese para arriba, quiero saber si hay una manera de cambiar el texto del título de la barra de herramientas, cuando CollapsingToolBarLayout él es derrumbado.

Embalaje, quiero dos títulos diferentes cuando se desplaza y cuando se amplía .

Gracias a todos de antemano

Comparto la implementación completa, basada en @Frodio Beggins y código @Nifhel:

 public abstract class AppBarStateChangeListener implements AppBarLayout.OnOffsetChangedListener { public enum State { EXPANDED, COLLAPSED, IDLE } private State mCurrentState = State.IDLE; @Override public final void onOffsetChanged(AppBarLayout appBarLayout, int i) { if (i == 0) { if (mCurrentState != State.EXPANDED) { onStateChanged(appBarLayout, State.EXPANDED); } mCurrentState = State.EXPANDED; } else if (Math.abs(i) >= appBarLayout.getTotalScrollRange()) { if (mCurrentState != State.COLLAPSED) { onStateChanged(appBarLayout, State.COLLAPSED); } mCurrentState = State.COLLAPSED; } else { if (mCurrentState != State.IDLE) { onStateChanged(appBarLayout, State.IDLE); } mCurrentState = State.IDLE; } } public abstract void onStateChanged(AppBarLayout appBarLayout, State state); } 

Y entonces usted puede utilizarlo:

 appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { @Override public void onStateChanged(AppBarLayout appBarLayout, State state) { Log.d("STATE", state.name()); } }); 

OnOffsetChangedListener un OnOffsetChangedListener a su AppBarLayout . Cuando verticalOffset alcanza 0 o leq que altura de la Toolbar de Toolbar , significa que CollapsingToolbarLayout ha colapsado, de lo contrario se está expandiendo o expandiendo.

 mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { if(verticalOffset == 0 || verticalOffset <= mToolbar.getHeight() && !mToolbar.getTitle().equals(mCollapsedTitle)){ mCollapsingToolbar.setTitle(mCollapsedTitle); }else if(!mToolbar.getTitle().equals(mExpandedTitle)){ mCollapsingToolbar.setTitle(mExpandedTitle); } } }); 

Esta solución perfectamente trabajando para mí para detectar el diseño de la barra de aplicaciones colapsado o ampliado.

 appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { if (Math.abs(verticalOffset)-appBarLayout.getTotalScrollRange() == 0) { // Collapsed } else { //Expanded } } }); 

Se utiliza addOnOffsetChangedListener en AppBarLayout.

Este código funcionó para mí

 mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { if (verticalOffset == -mCollapsingToolbarLayout.getHeight() + mToolbar.getHeight()) { //toolbar is collapsed here //write your code here } } }); 
 private enum State { EXPANDED, COLLAPSED, IDLE } private void initViews() { mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { private State state; @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { if (verticalOffset == 0) { if (state != State.EXPANDED) { ... } state = State.EXPANDED; } else if (Math.abs(verticalOffset) >= appBarLayout.getTotalScrollRange()) { if (state != State.COLLAPSED) { ... } state = State.COLLAPSED; } else { if (state != State.IDLE) { ... } state = State.IDLE; } } }); } 

Esta solución está funcionando para mí:

 @Override public void onOffsetChanged(AppBarLayout appBarLayout, int i) { if (i == 0) { if (onStateChangeListener != null && state != State.EXPANDED) { onStateChangeListener.onStateChange(State.EXPANDED); } state = State.EXPANDED; } else if (Math.abs(i) >= appBarLayout.getTotalScrollRange()) { if (onStateChangeListener != null && state != State.COLLAPSED) { onStateChangeListener.onStateChange(State.COLLAPSED); } state = State.COLLAPSED; } else { if (onStateChangeListener != null && state != State.IDLE) { onStateChangeListener.onStateChange(State.IDLE); } state = State.IDLE; } } 

Utilice addOnOffsetChangedListener en AppBarLayout.

Puede obtener el porcentaje de alfa de collapsingToolBar a continuación:

 appbarLayout.addOnOffsetChangedListener( new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { float percentage = ((float)Math.abs(verticalOffset)/appBarLayout.getTotalScrollRange()); fadedView.setAlpha(percentage); }); 

Para Referencia: link

Si está utilizando CollapsingToolBarLayout puede poner esto

 collapsingToolbar.setExpandedTitleColor(ContextCompat.getColor(activity, android.R.color.transparent)); collapsingToolbar.setTitle(title); 

Este código está funcionando perfecto para mí. Puedes usar la escala de porcentaje Cómo te gusta

 @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { double percentage = (double) Math.abs(verticalOffset) / collapsingToolbar.getHeight(); if (percentage > 0.8) { collapsingToolbar.setTitle("Collapsed"); } else { collapsingToolbar.setTitle("Expanded"); } } 
  • Detener desplazamiento en CollapsingToolbarLayout para que no se derrumbe completamente
  • CollapsingToolbarLayout setTitle () no se actualiza a menos que se colapse
  • Utilizar windowTranslucentStatus con CollapsingToolbarLayout
  • CollapsingToolbarLayout y posición de botón de acción flotante dentro de CollapsingToolbarLayout
  • 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
  • Problema de barra de estado de diseño de barra de herramientas de despliegue
  • CollapsingToolbarLayout | Problemas de desplazamiento y diseño 2
  • Prevenir CollapsingToolbarLayout colapsar si no es necesario
  • ¿Qué es layout_collapseParallaxMultiplier utilizado en CollapsingToolbarLayout?
  • Mostrar la vista cuando la barra de herramientas se derrumba
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.