5

Appbar 曾经在投掷时出现问题。它滚动不顺畅。

请参考这些:

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

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

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

在此处输入图像描述

如何删除此行为?

4

1 回答 1

6

这仅在(or ) 尚未完成投掷时AppBar滚动/投掷时发生。NestedScrollViewRecyclerView

解决方案:扩展 AppBar 的默认值,并在 NestedScroll 尚未停止的情况下Behavior阻止对 AppBar.BehavioronNestedPreScroll()onNestedScroll()何时触摸的调用。AppBar

 @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

于 2017-11-15T02:15:04.893 回答