BottomSheetBehavior getPeekHeight returns auto
This fixes BottomSheetBehavior#getPeekHeight so it returns
PEEK_HEIGHT_AUTO, and aligns the tests accordingly.
Bug: 29602451
Change-Id: I1ca0c5aebd2132fcfc7c4df894aea9a595e558fb
diff --git a/design/src/android/support/design/widget/BottomSheetBehavior.java b/design/src/android/support/design/widget/BottomSheetBehavior.java
index 30c7fb3..20b4b74 100644
--- a/design/src/android/support/design/widget/BottomSheetBehavior.java
+++ b/design/src/android/support/design/widget/BottomSheetBehavior.java
@@ -422,7 +422,8 @@
* Sets the height of the bottom sheet when it is collapsed.
*
* @param peekHeight The height of the collapsed bottom sheet in pixels, or
- * {@link #PEEK_HEIGHT_AUTO}.
+ * {@link #PEEK_HEIGHT_AUTO} to configure the sheet to peek automatically
+ * at 16:9 ratio keyline.
* @attr ref android.support.design.R.styleable#BottomSheetBehavior_Layout_behavior_peekHeight
*/
public final void setPeekHeight(int peekHeight) {
@@ -449,11 +450,12 @@
/**
* Gets the height of the bottom sheet when it is collapsed.
*
- * @return The height of the collapsed bottom sheet.
+ * @return The height of the collapsed bottom sheet in pixels, or {@link #PEEK_HEIGHT_AUTO}
+ * if the sheet is configured to peek automatically at 16:9 ratio keyline
* @attr ref android.support.design.R.styleable#BottomSheetBehavior_Layout_behavior_peekHeight
*/
public final int getPeekHeight() {
- return mPeekHeight;
+ return mPeekHeightAuto ? PEEK_HEIGHT_AUTO : mPeekHeight;
}
/**
diff --git a/design/tests/src/android/support/design/widget/BottomSheetDialogTest.java b/design/tests/src/android/support/design/widget/BottomSheetDialogTest.java
index da2055d..54a71f0 100644
--- a/design/tests/src/android/support/design/widget/BottomSheetDialogTest.java
+++ b/design/tests/src/android/support/design/widget/BottomSheetDialogTest.java
@@ -16,6 +16,7 @@
package android.support.design.widget;
+import org.hamcrest.Matcher;
import org.junit.Test;
import android.content.Context;
@@ -24,11 +25,14 @@
import android.support.design.widget.BottomSheetDialog;
import android.support.test.InstrumentationRegistry;
import android.support.test.espresso.Espresso;
+import android.support.test.espresso.UiController;
+import android.support.test.espresso.ViewAction;
import android.support.test.espresso.action.ViewActions;
import android.support.test.espresso.assertion.ViewAssertions;
import android.support.test.espresso.matcher.ViewMatchers;
import android.support.v7.widget.AppCompatTextView;
import android.test.suitebuilder.annotation.MediumTest;
+import android.view.View;
import android.widget.FrameLayout;
import static org.hamcrest.CoreMatchers.*;
@@ -65,6 +69,8 @@
assertThat(bottomSheet, is(notNullValue()));
BottomSheetBehavior<FrameLayout> behavior = BottomSheetBehavior.from(bottomSheet);
assertThat(behavior, is(notNullValue()));
+ // Modal bottom sheets have auto peek height by default.
+ assertThat(behavior.getPeekHeight(), is(BottomSheetBehavior.PEEK_HEIGHT_AUTO));
}
});
// Click outside the bottom sheet
@@ -97,6 +103,7 @@
});
// This ensures that the views are laid out before assertions below
Espresso.onView(ViewMatchers.withId(R.id.design_bottom_sheet))
+ .perform(setTallPeekHeight())
.check(ViewAssertions.matches(ViewMatchers.isDisplayed()));
InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
@@ -117,5 +124,25 @@
});
}
+ private static ViewAction setTallPeekHeight() {
+ return new ViewAction() {
+ @Override
+ public Matcher<View> getConstraints() {
+ return ViewMatchers.isDisplayed();
+ }
+
+ @Override
+ public String getDescription() {
+ return "set tall peek height";
+ }
+
+ @Override
+ public void perform(UiController uiController, View view) {
+ BottomSheetBehavior behavior = BottomSheetBehavior.from(view);
+ behavior.setPeekHeight(view.getHeight() + 100);
+ }
+ };
+ }
+
}