我正试图在nestedscrollview上实现弹性过度滚动,以实际执行类似于当列表过度滚动时缩放appbarlayout的内容,以及当用户抬起手指时滚动视图应该反弹。
我在nestedscrollview上的行为位于
之下mb_substr
我的活动xml是:
public class Behaviour extends
CoordinatorLayout.Behavior<NestedScrollView> {
private int totaloffset;
public Behaviour(Context context, AttributeSet attrs) {
}
@Override
public boolean onStartNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull NestedScrollView child, @NonNull View directTargetChild, @NonNull View target, int axes, int type) {
return true;
}
@Override
public void onNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull NestedScrollView child, @NonNull View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type) {
if (dyUnconsumed < 0) {
child.offsetTopAndBottom(-dyUnconsumed);
totaloffset = totaloffset + dyUnconsumed;
}
}
@Override
public void onStopNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull NestedScrollView child, @NonNull View target, int type) {
super.onStopNestedScroll(coordinatorLayout, child, target, type);
}
问题是我不知道如何用手指抬起来反弹回来。我试过ontouchevent,但要么停止正常的滚动行为或给出一些其他奇怪的结果。我可以通过简单地设置总偏移量来轻松地将其反弹回来。但我不知道在哪里写代码。
我也尝试在onStopscroll中实现它,但是当列表不滚动时调用它,即使用户没有抬起他的手指