Zaimplementowałem proste zachowanie ukrywania/pokazu dla przycisku akcji pływającej.Zachowanie przycisku akcji pływającej (fab) zatrzymuje się naNestedScroll po ukryciu
Zdarzenie onNestedScroll jest wywoływane, dopóki funkcja hide() lub setVisiblity (View.GONE) nie zostanie wywołana na pływającym przycisku akcji, a następnie przestanie reagować na zdarzenia przewijania. Wygląda na to, że widoczność bajek zostanie zmieniona na GONE, ale przestaje reagować na zdarzenia przewijania.
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();
}
}
}
}
informacje dodatkowe: kiedy używać ręcznie ustawić visiblity Niewidoczny to działa. Ale potem brakuje mi animacji.
myślę, że to pomyłka. Zamiast tego należy wywołać super onHidden() –