您的位置:首页 > 移动开发

禁止AppBarLayout滑动

2017-04-18 18:37 106 查看
private void forbidAppBarScroll(boolean forbid) {
if (forbid == forbidAppBarScroll) {
return;
}
if (forbid) {
forbidAppBarScroll = true;
if (ViewCompat.isLaidOut(appBar)) {
setAppBarDragCallback(new AppBarLayout.Behavior.DragCallback() {

@Override public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
return false;
}
});
} else {
appBar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
appBar.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
appBar.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
setAppBarDragCallback(new AppBarLayout.Behavior.DragCallback() {

@Override public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
return false;
}
});
}
});
}
} else {
forbidAppBarScroll = false;
if (ViewCompat.isLaidOut(appBar)) {
setAppBarDragCallback(null);
} else {
appBar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
appBar.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
appBar.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
setAppBarDragCallback(null);
}
});
}
}
}

private void setAppBarDragCallback(AppBarLayout.Behavior.DragCallback dragCallback) {
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBar.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
behavior.setDragCallback(dragCallback);
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android AppBarLayout