From e86ff4d56145d875c13a1637833f9f55d79febc9 Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Fri, 21 Jan 2011 17:46:11 -0800 Subject: [PATCH] Fixing a couple StackView bugs: -> Making sure to update visuals every time adapter count changes -> Fixing a clipping issue seen on some devices Change-Id: I489395b5caaa06eb7187b2dac679b793bf54d7e1 --- core/java/android/widget/AdapterViewAnimator.java | 2 ++ core/java/android/widget/StackView.java | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/java/android/widget/AdapterViewAnimator.java b/core/java/android/widget/AdapterViewAnimator.java index 6eb06ad2e77ab..e34a2041ba402 100644 --- a/core/java/android/widget/AdapterViewAnimator.java +++ b/core/java/android/widget/AdapterViewAnimator.java @@ -695,6 +695,8 @@ public abstract class AdapterViewAnimator extends AdapterView if (mWhichChild >= getWindowSize()) { mWhichChild = 0; + showOnly(mWhichChild, true); + } else if (mOldItemCount != getCount()) { showOnly(mWhichChild, true); } refreshChildren(); diff --git a/core/java/android/widget/StackView.java b/core/java/android/widget/StackView.java index 9ec4b74c59e34..03c073c3d10b7 100644 --- a/core/java/android/widget/StackView.java +++ b/core/java/android/widget/StackView.java @@ -454,9 +454,13 @@ public class StackView extends AdapterViewAnimator { canvas.getClipBounds(stackInvalidateRect); final int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { - LayoutParams lp = (LayoutParams) getChildAt(i).getLayoutParams(); + final View child = getChildAt(i); + LayoutParams lp = (LayoutParams) child.getLayoutParams(); + if ((lp.horizontalOffset == 0 && lp.verticalOffset == 0) || + child.getAlpha() == 0f || child.getVisibility() != VISIBLE) { + lp.resetInvalidateRect(); + } stackInvalidateRect.union(lp.getInvalidateRect()); - lp.resetInvalidateRect(); } canvas.save(Canvas.CLIP_SAVE_FLAG); canvas.clipRect(stackInvalidateRect, Region.Op.UNION);