我目前有一个带有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
}
答案 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。