布尔值返回false时禁用NestedScrollView

时间:2019-03-06 02:40:04

标签: java android android-nestedscrollview

我目前有一个带有ConstraintLayout和NestedScrollView的CoordinatorLayout。 NestedScrollView的窥视高度为50dp,仅是一个标题。我希望能够在连接设备时拉起NestedScrollView,但是当它未连接时,我只希望能够看到窥视而不能拖动其余视图。

if(deviceConnected) {
    mBottomSheetText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mBottomSheetBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) {
                mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
            } else {
                mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
            }
        }
    });
} else {
        
//Want to prevent it form being draggable

}

1 个答案:

答案 0 :(得分:0)

DragCallback界面允许选择是否应通过滚动到AppBarLayout来控制同级滚动视图。

您可以按照以下步骤进行操作:

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
    @Override
    public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
        return false;
    }
});

由于始终返回false,因此滚动视图不再受appbarLayout的控制。

注意:在调用此函数之前,您应该检查ViewCompat.isLaidOut(appBarLayout),否则params.getBehavior()将返回null。

选中此link