Simplify tab min/max width measure code
Allows us to fix some states when both the min and max are set,
but are not both taken into account.
Change-Id: I7b1edaed29a4cef992b32e85ca61ba1501c15120
diff --git a/design/src/android/support/design/widget/TabLayout.java b/design/src/android/support/design/widget/TabLayout.java
index 6e0153a..f9e6968 100755
--- a/design/src/android/support/design/widget/TabLayout.java
+++ b/design/src/android/support/design/widget/TabLayout.java
@@ -1146,14 +1146,13 @@
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- if (mTabMaxWidth != 0 && getMeasuredWidth() > mTabMaxWidth) {
- // Re-measure if we went beyond our maximum size.
- super.onMeasure(MeasureSpec.makeMeasureSpec(
- mTabMaxWidth, MeasureSpec.EXACTLY), heightMeasureSpec);
- } else if (mTabMinWidth > 0 && getMeasuredHeight() < mTabMinWidth) {
- // Re-measure if we're below our minimum size.
- super.onMeasure(MeasureSpec.makeMeasureSpec(
- mTabMinWidth, MeasureSpec.EXACTLY), heightMeasureSpec);
+ final int measuredWidth = getMeasuredWidth();
+ if (measuredWidth < mTabMinWidth || measuredWidth > mTabMaxWidth) {
+ // Re-measure if we are outside our min or max width
+ widthMeasureSpec = MeasureSpec.makeMeasureSpec(
+ MathUtils.constrain(measuredWidth, mTabMinWidth, mTabMaxWidth),
+ MeasureSpec.EXACTLY);
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}