diff options
Diffstat (limited to 'graphics/java')
-rw-r--r-- | graphics/java/android/graphics/drawable/GradientDrawable.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java index 1458238..94c7026 100644 --- a/graphics/java/android/graphics/drawable/GradientDrawable.java +++ b/graphics/java/android/graphics/drawable/GradientDrawable.java @@ -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; } |