diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index fd6769ca64006..deba70cdfad77 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -3542,10 +3542,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager for (int i = 0; i < childCount; i++) { final View child = getChildAt(i); if (child.isOverlayEnabled()) { - canvas.translate(child.mLeft + child.mScrollX, child.mTop + child.mScrollY); + canvas.translate(child.mLeft - child.mScrollX, child.mTop - child.mScrollY); child.onDrawOverlay(canvas); - canvas.translate(-(child.mLeft + child.mScrollX), - -(child.mTop + child.mScrollY)); + canvas.translate(-(child.mLeft - child.mScrollX), + -(child.mTop - child.mScrollY)); } } } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index a14d004ffa92d..a09b0c8702e6f 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -7727,8 +7727,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener bounds.bottom = bounds.top + drawableHeight; convertFromViewportToContentCoordinates(bounds); + invalidate(); mDrawable.setBounds(bounds); - postInvalidate(); + invalidate(); } boolean hasFingerOn(float x, float y) { @@ -7745,9 +7746,16 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return Rect.intersects(mDrawable.getBounds(), fingerRect); } + void invalidate() { + final Rect bounds = mDrawable.getBounds(); + TextView.this.invalidate(bounds.left, bounds.top, + bounds.right, bounds.bottom); + } + void postInvalidate() { final Rect bounds = mDrawable.getBounds(); - TextView.this.postInvalidate(bounds.left, bounds.top, bounds.right, bounds.bottom); + TextView.this.postInvalidate(bounds.left, bounds.top, + bounds.right, bounds.bottom); } void postInvalidateDelayed(long delay) {