Ich implementiert ein einfaches Verbergen/Anzeigen Verhalten für die unverankerte Aktion Schaltfläche.Floating-Aktion Schaltfläche (fab) Verhalten stoppt onNestedScroll nach ausblenden
Das onNestedScroll-Ereignis wird aufgerufen, bis hide() oder setVisiblity (View.GONE) auf der schwebenden Aktionstaste aufgerufen wird, dann reagiert es nicht mehr auf Bildlaufereignisse. Es scheint, wenn die Fab-Sichtbarkeit auf GONE geändert wird, reagiert sie nicht mehr auf Scroll-Ereignisse.
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();
}
}
}
}
weitere Informationen: Wenn ich manuell die visiblity unsichtbar gesetzt verwenden es funktioniert. Aber dann fehlt mir die Animation.
Ich denke, es ist ein Fehler. Sie sollten stattdessen super onHidden() aufrufen –