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);
             }
         }