diff options
Diffstat (limited to 'core/java/android/widget')
-rw-r--r-- | core/java/android/widget/ScrollBarDrawable.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/core/java/android/widget/ScrollBarDrawable.java b/core/java/android/widget/ScrollBarDrawable.java index b12c581..6fd90c3 100644 --- a/core/java/android/widget/ScrollBarDrawable.java +++ b/core/java/android/widget/ScrollBarDrawable.java @@ -44,6 +44,7 @@ public class ScrollBarDrawable extends Drawable implements Drawable.Callback { private boolean mRangeChanged; private boolean mAlwaysDrawHorizontalTrack; private boolean mAlwaysDrawVerticalTrack; + private boolean mMutated; private int mAlpha = 255; private boolean mHasSetAlpha; @@ -266,6 +267,10 @@ public class ScrollBarDrawable extends Drawable implements Drawable.Callback { private void propagateCurrentState(Drawable d) { if (d != null) { + if (mMutated) { + d.mutate(); + } + d.setState(getState()); d.setCallback(this); @@ -290,6 +295,26 @@ public class ScrollBarDrawable extends Drawable implements Drawable.Callback { } @Override + public ScrollBarDrawable mutate() { + if (!mMutated && super.mutate() == this) { + if (mVerticalTrack != null) { + mVerticalTrack.mutate(); + } + if (mVerticalThumb != null) { + mVerticalThumb.mutate(); + } + if (mHorizontalTrack != null) { + mHorizontalTrack.mutate(); + } + if (mHorizontalThumb != null) { + mHorizontalThumb.mutate(); + } + mMutated = true; + } + return this; + } + + @Override public void setAlpha(int alpha) { mAlpha = alpha; mHasSetAlpha = true; |