Как убрать эффект подпрыгивания на панели приложений?

Раньше на панели приложений возникала проблема при перебросе. Прокрутка не шла гладко.

Пожалуйста, обратитесь к этим:

Но это было исправлено в библиотеке поддержки версии 26.

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

Тем не менее, панель приложений теперь возвращается в норму, даже если бросать не сложно.

введите описание изображения здесь

Как мне убрать такое поведение?


person vida    schedule 07.11.2017    source источник


Ответы (1)


Это происходит только тогда, когда AppBar прокручивается / отбрасывается, а NestedScrollView (или RecyclerView) еще не закончил бросок.

Решение. Расширьте Behavior_ по умолчанию для AppBar и заблокируйте вызов onNestedPreScroll() и onNestedScroll() для AppBar.Behavior при касании AppBar, пока NestedScroll еще не остановился.

 @Override
public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dx, int dy, int[] consumed, int type) {
    if (type == TYPE_FLING) {
        isFlinging = true;
    }
    if (!shouldBlockNestedScroll) {
        super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed, type);
    }
}

@Override
public void onNestedScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type) {
    if (!shouldBlockNestedScroll) {
        super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, type);
    }
}

затем используйте его в макете:

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    ...
    app:layout_behavior="com.mypackage.NoBounceBehavior"/>

Ссылку для полного кода настраиваемого поведения можно найти здесь: https://gist.github.com/ampatron/9d56ea401094f67196f407f82f14551a

person vida    schedule 15.11.2017
comment
Просто дополнительное примечание для всех читателей: не забудьте добавить два конструктора класса в свой класс NoBounce, иначе он не сможет загрузить новое поведение. - person Shadow; 31.05.2018