summaryrefslogtreecommitdiff
path: root/core/java/android/widget/CheckedTextView.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/widget/CheckedTextView.java')
-rw-r--r--core/java/android/widget/CheckedTextView.java19
1 files changed, 11 insertions, 8 deletions
diff --git a/core/java/android/widget/CheckedTextView.java b/core/java/android/widget/CheckedTextView.java
index 6b4b2c73bdff..c1d275613ed9 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.