MediaRouter: make MediaRouteButton comform to Widget.AppCompat.ActionButton
Also, fix onMeasure() to ensure that (min) width/height includes paddings.
Bug: 22947288
Change-Id: I98ce02061e11e84c5de53c46baeb52cbf1e352a0
diff --git a/v7/mediarouter/res/values/styles.xml b/v7/mediarouter/res/values/styles.xml
index 9be8545..39bd56d 100644
--- a/v7/mediarouter/res/values/styles.xml
+++ b/v7/mediarouter/res/values/styles.xml
@@ -17,21 +17,13 @@
<resources>
<style name="Widget.MediaRouter.MediaRouteButton"
parent="Widget.AppCompat.ActionButton">
- <item name="android:minWidth">56dp</item>
- <item name="android:minHeight">48dp</item>
- <item name="android:padding">0dp</item>
- <item name="android:focusable">true</item>
<item name="android:contentDescription">@string/mr_media_route_button_content_description</item>
<item name="externalRouteEnabledDrawable">@drawable/mr_ic_media_route_mono_dark</item>
</style>
<style name="Widget.MediaRouter.Light.MediaRouteButton"
parent="Widget.AppCompat.Light.ActionButton">
- <item name="android:minWidth">56dp</item>
- <item name="android:minHeight">48dp</item>
- <item name="android:padding">0dp</item>
- <item name="android:focusable">true</item>
<item name="android:contentDescription">@string/mr_media_route_button_content_description</item>
<item name="externalRouteEnabledDrawable">@drawable/mr_ic_media_route_mono_light</item>
</style>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/v7/mediarouter/src/android/support/v7/app/MediaRouteButton.java b/v7/mediarouter/src/android/support/v7/app/MediaRouteButton.java
index 379ba80..9fdd56c 100644
--- a/v7/mediarouter/src/android/support/v7/app/MediaRouteButton.java
+++ b/v7/mediarouter/src/android/support/v7/app/MediaRouteButton.java
@@ -431,40 +431,40 @@
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
- final int minWidth = Math.max(mMinWidth,
- mRemoteIndicator != null ? mRemoteIndicator.getIntrinsicWidth() : 0);
- final int minHeight = Math.max(mMinHeight,
- mRemoteIndicator != null ? mRemoteIndicator.getIntrinsicHeight() : 0);
+ final int width = Math.max(mMinWidth, mRemoteIndicator != null ?
+ mRemoteIndicator.getIntrinsicWidth() + getPaddingLeft() + getPaddingRight() : 0);
+ final int height = Math.max(mMinHeight, mRemoteIndicator != null ?
+ mRemoteIndicator.getIntrinsicHeight() + getPaddingTop() + getPaddingBottom() : 0);
- int width;
+ int measuredWidth;
switch (widthMode) {
case MeasureSpec.EXACTLY:
- width = widthSize;
+ measuredWidth = widthSize;
break;
case MeasureSpec.AT_MOST:
- width = Math.min(widthSize, minWidth + getPaddingLeft() + getPaddingRight());
+ measuredWidth = Math.min(widthSize, width);
break;
default:
case MeasureSpec.UNSPECIFIED:
- width = minWidth + getPaddingLeft() + getPaddingRight();
+ measuredWidth = width;
break;
}
- int height;
+ int measuredHeight;
switch (heightMode) {
case MeasureSpec.EXACTLY:
- height = heightSize;
+ measuredHeight = heightSize;
break;
case MeasureSpec.AT_MOST:
- height = Math.min(heightSize, minHeight + getPaddingTop() + getPaddingBottom());
+ measuredHeight = Math.min(heightSize, height);
break;
default:
case MeasureSpec.UNSPECIFIED:
- height = minHeight + getPaddingTop() + getPaddingBottom();
+ measuredHeight = height;
break;
}
- setMeasuredDimension(width, height);
+ setMeasuredDimension(measuredWidth, measuredHeight);
}
@Override