Подтвердить что ты не робот

Библиотека дизайна Android 25.1.0 заставляет FloatingActionButton.Behavior перестать работать

Я использую этот FloatingActionButton.Behavior уже много месяцев, он заботится о том, чтобы скрывать и показывать FAB моего приложения. Никогда не было проблемы.

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();
    }
}}

Как только я обновляюсь в библиотеке поддержки

compile 'com.android.support:design:25.1.0'

FloatingActionButton.Behavior перестает работать должным образом. Он скрывает FAB один раз, а затем никогда больше не звонил. Не метод onStartNestedScroll или onNestedScroll.

Кто-нибудь знает, что происходит здесь. Остальная часть моего кода остается неизменной, я только обновляю эту библиотеку, и она перестает работать по-прежнему.

4b9b3361

Ответ 1

Для 25.1.0, CoordinatorLayout пропускает представления, установленные на GONE, при поиске поведения для вызова в методе onNestedScroll.
Решение заменяет видимость FAB GONE на INVISIBLE.
Просто измените:

child.hide();  

to:

child.hide(new FloatingActionButton.OnVisibilityChangedListener() {
        @Override
        public void onHidden(FloatingActionButton fab) {
            super.onHidden(fab);
            fab.setVisibility(View.INVISIBLE);
        }
    });

Ответ 2

У меня абсолютно такая же проблема, похоже, что есть ошибка в пакете поддержки-дизайна. Единственное, что мы можем сделать сейчас, я считаю, - откат к одной из предыдущих версий. Я решил использовать следующее:

compile 'com.android.support:design:25.0.1'