summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alan Viverette <alanv@google.com> 2013-12-02 19:30:51 -0800
committer Alan Viverette <alanv@google.com> 2013-12-02 19:30:51 -0800
commit7c263c6ee7433d425aa5f69e7eaeeade027dec2f (patch)
tree7f85de8676fa8cc72856ef231cab3c6325d5af39
parent8af04d8b85183978aa6182c281325394bf47a593 (diff)
Handle null argument to GradientDrawable.setColor() and setStroke()
BUG: 11966834 Change-Id: I5d17bd846b95eceaa7aa1dff64a3e6886f7e6539
-rw-r--r--graphics/java/android/graphics/drawable/GradientDrawable.java30
1 files changed, 20 insertions, 10 deletions
diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java
index ba4698cb9560..d4799e6ba82d 100644
--- a/graphics/java/android/graphics/drawable/GradientDrawable.java
+++ b/graphics/java/android/graphics/drawable/GradientDrawable.java
@@ -288,11 +288,15 @@ public class GradientDrawable extends Drawable {
*/
public void setStroke(
int width, ColorStateList colorStateList, float dashWidth, float dashGap) {
- mGradientState.setStroke(width, colorStateList, dashWidth, dashGap);
+ if (colorStateList == null) {
+ setStroke(width, Color.TRANSPARENT, dashWidth, dashGap);
+ } else {
+ mGradientState.setStroke(width, colorStateList, dashWidth, dashGap);
- final int[] stateSet = getState();
- final int color = colorStateList.getColorForState(stateSet, 0);
- setStrokeInternal(width, color, dashWidth, dashGap);
+ final int[] stateSet = getState();
+ final int color = colorStateList.getColorForState(stateSet, 0);
+ setStrokeInternal(width, color, dashWidth, dashGap);
+ }
}
private void setStrokeInternal(int width, int color, float dashWidth, float dashGap) {
@@ -675,7 +679,9 @@ public class GradientDrawable extends Drawable {
/**
* Changes this drawable to use a single color state list instead of a
- * gradient.
+ * gradient. Calling this method with a null argument will clear the color
+ * and is equivalent to calling {@link #setColor(int)} with the argument
+ * {@link Color#TRANSPARENT}.
* <p>
* <strong>Note</strong>: changing color will affect all instances of a
* drawable loaded from a resource. It is recommended to invoke
@@ -685,10 +691,14 @@ public class GradientDrawable extends Drawable {
* @see #mutate()
*/
public void setColor(ColorStateList colorStateList) {
- final int color = colorStateList.getColorForState(getState(), 0);
- mGradientState.setColorStateList(colorStateList);
- mFillPaint.setColor(color);
- invalidateSelf();
+ if (colorStateList == null) {
+ setColor(Color.TRANSPARENT);
+ } else {
+ final int color = colorStateList.getColorForState(getState(), 0);
+ mGradientState.setColorStateList(colorStateList);
+ mFillPaint.setColor(color);
+ invalidateSelf();
+ }
}
@Override
@@ -1295,7 +1305,7 @@ public class GradientDrawable extends Drawable {
}
public void setSolidColor(int argb) {
- mHasSolidColor = true;
+ mHasSolidColor = argb != Color.TRANSPARENT;
mSolidColor = argb;
mColors = null;
mColorStateList = null;