如何删除appbar上的弹跳效果?

时间:2017-11-07 08:04:55

标签: android android-collapsingtoolbarlayout appbar fling

Appbar曾经在投掷时遇到问题。它没有顺利滚动。

请参阅以下内容:

但它已在支持库版本26中修复。

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

然而,即使投掷并不困难,appbar现在也会反弹。

enter image description here

如何删除此行为?

1 个答案:

答案 0 :(得分:4)

只有当AppBar(或NestedScrollView)尚未完成投掷时才会滚动/抛出RecyclerView时才会发生这种情况。

解决方案:延长AppBar的默认Behavior并阻止对AppBar.Behavior onNestedPreScroll()onNestedScroll()的调用AppBar当NestedScroll尚未停止时,触摸了1}}。

 @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