diff --git a/library/src/main/java/com/trafi/anchorbottomsheetbehavior/AnchorBottomSheetBehavior.java b/library/src/main/java/com/trafi/anchorbottomsheetbehavior/AnchorBottomSheetBehavior.java index 0424bce..aad9f67 100644 --- a/library/src/main/java/com/trafi/anchorbottomsheetbehavior/AnchorBottomSheetBehavior.java +++ b/library/src/main/java/com/trafi/anchorbottomsheetbehavior/AnchorBottomSheetBehavior.java @@ -179,6 +179,8 @@ public void onSlide(@NonNull View bottomSheet, float slideOffset) { private boolean mSkipCollapsed; + private boolean mDisableCollapsed; + private boolean mDisableExpanded; @AnchorBottomSheetBehavior.State @@ -288,9 +290,8 @@ public boolean onLayoutChild(CoordinatorLayout parent, V child, int layoutDirect peekHeight = mPeekHeight; } mMinOffset = Math.max(0, mParentHeight - child.getHeight()); - if (mDisableExpanded) { - mMinOffset = mAnchorOffset; - } + updateConstraints(); + mMaxOffset = Math.max(mParentHeight - peekHeight, mMinOffset); if (mState == STATE_EXPANDED) { ViewCompat.offsetTopAndBottom(child, mMinOffset); @@ -534,9 +535,7 @@ public final void setAnchorOffset(int anchorOffset) { if (mAnchorOffset != anchorOffset) { mAnchorOffset = anchorOffset; - if (mDisableExpanded) { - mMinOffset = mAnchorOffset; - } + updateConstraints(); if (mState == STATE_ANCHORED) { setStateInternal(STATE_SETTLING); @@ -545,6 +544,16 @@ public final void setAnchorOffset(int anchorOffset) { } } + private void updateConstraints() { + if (mDisableExpanded) { + mMinOffset = mAnchorOffset; + } + + if (mDisableCollapsed) { + mPeekHeight = mAnchorOffset; + } + } + /** * Gets the offset of the bottom sheet when it is anchored. * @@ -597,6 +606,14 @@ public boolean getSkipCollapsed() { return mSkipCollapsed; } + public boolean isDisableCollapsed() { + return mDisableCollapsed; + } + + public void setDisableCollapsed(boolean mDisableCollapsed) { + this.mDisableCollapsed = mDisableCollapsed; + } + public boolean isDisableExpanded() { return mDisableExpanded; }