双击fling问题是由于在CoordinatorLayout中使用AppBarLayout时,fling操作被正确地传递到AppBarLayout,但AppBarLayout会以不正确的速度执行fling,导致屏幕抖动并导致用户体验变差的问题。要解决这个问题,可以使用以下解决方案:
public class CustomAppBarBehavior extends AppBarLayout.Behavior {
private boolean mAllowFling = true;
public CustomAppBarBehavior() {
super();
}
@Override
public boolean onNestedFling(CoordinatorLayout coordinatorLayout, AppBarLayout child,
View target, float velocityX, float velocityY, boolean consumed) {
if (!mAllowFling) {
return false;
}
return super.onNestedFling(coordinatorLayout, child, target,
velocityX, velocityY, consumed);
}
public void setAllowFling(boolean allowFling) {
mAllowFling = allowFling;
}
}
在这个示例代码中,我们覆盖了onNestedFling方法,并增加了一个标志位mAllowFling来控制AppBarLayout的fling操作是否被允许。
// 禁用AppBarLayout的fling
CustomAppBarBehavior customAppBarBehavior = (CustomAppBarBehavior)
((CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams()).getBehavior();
if (customAppBarBehavior != null) {
customAppBarBehavior.setAllow