禁止AppBarLayout滑动

来源:互联网 发布:五轴加工中心编程视频 编辑:程序博客网 时间:2024/06/18 05:00
 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);    }

                                             
0 0
原创粉丝点击