El comportamiento del botón de acción flotante (fab) detiene onNestedScroll después de ocultar
Implementé un comportamiento simple de ocultar / mostrar para el botón de acción flotante.
El evento onNestedScroll se llama hasta que hide () o setVisiblity (View.GONE) se llama en el actionbutton flotante entonces deja de reaccionar a los eventos de desplazamiento. Parece que cuando la visibilidad del fab se cambia a GONE deja de reaccionar a los eventos de desplazamiento.
- Botón de acción flotante y fondo blanco
- ¿Es esto un error en la biblioteca de diseño de soporte para Android?
- Progreso circular con un botón de acción flotante
- Android.support.design.widget.FloatingActionButton la implantación de FAB reduce el tamaño de la imagen
- Clase FloatingActionMenu Añade Espaciado entre Botones
public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior { public ScrollAwareFABBehavior(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onStartNestedScroll(final CoordinatorLayout coordinatorLayout, final FloatingActionButton child, final View directTargetChild, final View target, final int nestedScrollAxes) { return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL || super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes); } @Override public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) { child.hide(); } else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) { child.show(); } } } }
Información adicional: Cuando uso manualmente establecer la visibilidad a invisible funciona. Pero entonces me falta la animación.
- Roto, gota, sombra, flotante, acción, botón, pre, lollipop
- El botón de acción flotante siempre se muestra en la parte superior
- InflateException con FloatingActionButton de la biblioteca de diseño oficial
- FAB con anclaje en el diseño del coordinador tiene margen extra en android pre-lollipop
- Cómo habilitar / deshabilitar el comportamiento de FloatingActionButton
- Dos botones flotantes en el único diseño
- Hacer que FAB responda a Soft Keyboard mostrar / ocultar cambios
- Error al inflacionar la clase android.support.design.widget.CoordinatorLayout
Parece que es posible cambiar el comportamiento de la ocultación como se describe aquí: https://stackoverflow.com/a/41386278/1038102
child.hide(new FloatingActionButton.OnVisibilityChangedListener() @Override public void onHidden(FloatingActionButton fab) { super.onShown(fab); fab.setVisibility(View.INVISIBLE); } });