From c60feca6a93273e63735d31bd4bfe21462c1b003 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Wed, 12 Aug 2015 16:26:37 -0400 Subject: [PATCH] Clear check mark resource ID when set from Drawable object Bug: 22626247 Change-Id: Ia32bc19512442fdf0d2c091d63a61f992545f2c2 --- core/java/android/widget/CheckedTextView.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java index 6b4b2c73bdff6..c1d275613ed96 100644 --- a/core/java/android/widget/CheckedTextView.java +++ b/core/java/android/widget/CheckedTextView.java @@ -152,13 +152,8 @@ public class CheckedTextView extends TextView implements Checkable { return; } - mCheckMarkResource = resId; - - Drawable d = null; - if (mCheckMarkResource != 0) { - d = getContext().getDrawable(mCheckMarkResource); - } - setCheckMarkDrawable(d); + final Drawable d = resId != 0 ? getContext().getDrawable(resId) : null; + setCheckMarkDrawableInternal(d, resId); } /** @@ -172,12 +167,18 @@ public class CheckedTextView extends TextView implements Checkable { * @see #setCheckMarkDrawable(int) * @see #getCheckMarkDrawable() */ - public void setCheckMarkDrawable(Drawable d) { + public void setCheckMarkDrawable(@Nullable Drawable d) { + setCheckMarkDrawableInternal(d, 0); + } + + private void setCheckMarkDrawableInternal(@Nullable Drawable d, @DrawableRes int resId) { if (mCheckMarkDrawable != null) { mCheckMarkDrawable.setCallback(null); unscheduleDrawable(mCheckMarkDrawable); } + mNeedRequestlayout = (d != mCheckMarkDrawable); + if (d != null) { d.setCallback(this); d.setVisible(getVisibility() == VISIBLE, false); @@ -190,7 +191,9 @@ public class CheckedTextView extends TextView implements Checkable { } else { mCheckMarkWidth = 0; } + mCheckMarkDrawable = d; + mCheckMarkResource = resId; // Do padding resolution. This will call internalSetPadding() and do a // requestLayout() if needed.