summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Qi (wangqi) Wang <wangqi@google.com> 2020-06-12 11:10:34 -0700
committer Qi (wangqi) Wang <wangqi@google.com> 2020-06-12 18:53:34 -0700
commitd0292964f3a4ab0a5e3a6f00514f01c498530d3f (patch)
treeda0e4b6cca6959fb5b3c2006e9c8a5698224bf9a
parentf083c15656ed9aa7c47a0dcf301bb568feda9d3e (diff)
Make underlying SurfaceView respect visibility of InlineContentView.
SurfaceView doesn't respect its ancestor's visibility change, so we need a OnPreDrawListener listener to update it according to visibility change in the view hierarchy. Bug: 158714351 Test: verified locally Change-Id: I7d6a7db48e037ed7d4ec2ecb23a158e8d1c43240
-rw-r--r--core/java/android/widget/inline/InlineContentView.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/core/java/android/widget/inline/InlineContentView.java b/core/java/android/widget/inline/InlineContentView.java
index 6a85de5ca757..8ca218c1d1a7 100644
--- a/core/java/android/widget/inline/InlineContentView.java
+++ b/core/java/android/widget/inline/InlineContentView.java
@@ -27,6 +27,7 @@ import android.view.SurfaceControlViewHost;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.ViewGroup;
+import android.view.ViewTreeObserver.OnPreDrawListener;
import java.util.function.Consumer;
@@ -130,6 +131,16 @@ public class InlineContentView extends ViewGroup {
@Nullable
private SurfacePackageUpdater mSurfacePackageUpdater;
+ @NonNull
+ private final OnPreDrawListener mDrawListener = new OnPreDrawListener() {
+ @Override
+ public boolean onPreDraw() {
+ int visibility = InlineContentView.this.isShown() ? VISIBLE : GONE;
+ mSurfaceView.setVisibility(visibility);
+ return true;
+ }
+ };
+
/**
* @inheritDoc
* @hide
@@ -202,6 +213,8 @@ public class InlineContentView extends ViewGroup {
}
});
}
+ mSurfaceView.setVisibility(VISIBLE);
+ getViewTreeObserver().addOnPreDrawListener(mDrawListener);
}
@Override
@@ -211,6 +224,7 @@ public class InlineContentView extends ViewGroup {
if (mSurfacePackageUpdater != null) {
mSurfacePackageUpdater.onSurfacePackageReleased();
}
+ getViewTreeObserver().removeOnPreDrawListener(mDrawListener);
}
@Override