From 96ccd39d354d8b268eac32e4cf873ea141ef5ed4 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Fri, 30 Jan 2015 15:55:48 -0800 Subject: Use inherited visibility to set visibility of managed drawables Previously we only used direct visibility, which resulted in strange behavior when a parent view with an animated child was hidden. We were also incorrectly awakening scroll bars for non-visible views, though that's a much less visible (pun intended) bug. Only handles the two most common cases for ripples. A subsequent CL will update handling of View drawable management and fix this for all managed drawables. Bug: 15350931 Change-Id: I0d0fe2c51210e8d2e0a73b0248cec3b93bfc36f5 --- core/java/android/widget/FrameLayout.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'core/java/android/widget/FrameLayout.java') diff --git a/core/java/android/widget/FrameLayout.java b/core/java/android/widget/FrameLayout.java index f208fff..b5782fc 100644 --- a/core/java/android/widget/FrameLayout.java +++ b/core/java/android/widget/FrameLayout.java @@ -18,6 +18,7 @@ package android.widget; import java.util.ArrayList; +import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.content.res.ColorStateList; @@ -203,11 +204,15 @@ public class FrameLayout extends ViewGroup { } @Override - @RemotableViewMethod - public void setVisibility(@Visibility int visibility) { - super.setVisibility(visibility); - if (mForeground != null) { - mForeground.setVisible(visibility == VISIBLE, false); + protected void onVisibilityChanged(@NonNull View changedView, @Visibility int visibility) { + super.onVisibilityChanged(changedView, visibility); + + final Drawable dr = mForeground; + if (dr != null) { + final boolean visible = visibility == VISIBLE && getVisibility() == VISIBLE; + if (visible != dr.isVisible()) { + dr.setVisible(visible, false); + } } } -- cgit v1.1