diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index aa11e3f96ef5d..816d9c48539ec 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -4994,6 +4994,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if (child.hasFocus()) { requestChildFocus(child, child.findFocus()); } + dispatchVisibilityAggregated(isAttachedToWindow() && getWindowVisibility() == VISIBLE + && isShown()); } /** diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java index 04d344f0caa6e..222a040d2b3ca 100644 --- a/core/java/android/widget/ImageView.java +++ b/core/java/android/widget/ImageView.java @@ -913,7 +913,9 @@ public class ImageView extends View { if (mDrawable != null) { mDrawable.setCallback(null); unscheduleDrawable(mDrawable); - mDrawable.setVisible(false, false); + if (isAttachedToWindow()) { + mDrawable.setVisible(false, false); + } } mDrawable = d; @@ -924,8 +926,9 @@ public class ImageView extends View { if (d.isStateful()) { d.setState(getDrawableState()); } - d.setVisible(isAttachedToWindow() && getWindowVisibility() == VISIBLE && isShown(), - true); + if (isAttachedToWindow()) { + d.setVisible(getWindowVisibility() == VISIBLE && isShown(), true); + } d.setLevel(mLevel); mDrawableWidth = d.getIntrinsicWidth(); mDrawableHeight = d.getIntrinsicHeight();