Merge "Default gradient radius to %p when no intrinsic width or height set" into lmp-mr1-dev

This commit is contained in:
Alan Viverette
2014-11-05 00:43:15 +00:00
committed by Android (Google) Code Review

View File

@@ -943,7 +943,11 @@ public class GradientDrawable extends Drawable {
float radius = st.mGradientRadius;
if (st.mGradientRadiusType == RADIUS_TYPE_FRACTION) {
radius *= Math.min(st.mWidth, st.mHeight);
// Fall back to parent width or height if intrinsic
// size is not specified.
final float width = st.mWidth >= 0 ? st.mWidth : r.width();
final float height = st.mHeight >= 0 ? st.mHeight : r.height();
radius *= Math.min(width, height);
} else if (st.mGradientRadiusType == RADIUS_TYPE_FRACTION_PARENT) {
radius *= Math.min(r.width(), r.height());
}
@@ -954,9 +958,9 @@ public class GradientDrawable extends Drawable {
mGradientRadius = radius;
if (radius == 0) {
// We can't have a shader with zero radius, so let's
// have a very, very small radius.
if (radius <= 0) {
// We can't have a shader with non-positive radius, so
// let's have a very, very small radius.
radius = 0.001f;
}