Używam tego FloatingActionButton.Behavior od wielu miesięcy, dba o ukrywanie i pokazywanie FAB mojej aplikacji. Nigdy nie miałem problemu.Biblioteka projektowania Androida 25.1.0 powoduje, że funkcja FloatingActionButton.Behavior przestanie działać
public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior {
public ScrollAwareFABBehavior(Context context, AttributeSet attrs) {
super();
}
@Override
public boolean onStartNestedScroll(final CoordinatorLayout coordinatorLayout, final FloatingActionButton child,
final View directTargetChild, final View target, final int nestedScrollAxes) {
// Ensure we react to vertical scrolling
return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL
|| super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes);
}
@Override
public void onNestedScroll(final CoordinatorLayout coordinatorLayout, final FloatingActionButton child,
final View target, final int dxConsumed, final int dyConsumed,
final int dxUnconsumed, final int dyUnconsumed) {
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);
if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
// User scrolled down and the FAB is currently visible -> hide the FAB
child.hide();
} else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) {
// User scrolled up and the FAB is currently not visible -> show the FAB
child.show();
}
}}
Jak tylko zaktualizować do biblioteki wsparcia
compile 'com.android.support:design:25.1.0'
FloatingActionButton.Behavior przestanie działać prawidłowo. Ukrywa FAB raz, a następnie nigdy nie jest wywoływany ponownie. Nie jest to metoda onStartNestedScroll ani metoda onNestedScroll.
Czy ktoś wie, co się tutaj dzieje. Reszta mojego kodu pozostaje niezmieniona, ja tylko aktualizuję tę bibliotekę i przestaje działać jak poprzednio.
Pojawiła się nowa wersja kompilacji 'com.android.support:design:25.2.0' a błąd nadal istnieje, tak dalece "Nie aktualizuję tej biblioteki, utknąłem z 25.0.0 – Lancelot
Do tej pory używam rozwiązania z @woxingxiao i działa dobrze z wersją 25.2.0 – Lancelot