From fc5f2a60d360a47e4e852bdc474d83bceb13f83d Mon Sep 17 00:00:00 2001 From: TYM Tsai Date: Wed, 8 Jun 2022 23:10:17 +0800 Subject: [PATCH] Fix view does not show fill dialog Sometimes, views may not be visible for the user immediately after laid out, so add flag for do the evaluation once the view is visible. Bug: 234429643 Test: Manual, check the fill dialog is appeared Change-Id: I6b96b68ffc4a4b1ee5f5056848c5c4996d21ae73 --- core/java/android/view/View.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index ba6ba63e4ed05..4fa9b5b8a3c83 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -8207,7 +8207,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // We have not been laid out yet, hence cannot evaluate // whether this view is visible to the user, we will do // the evaluation once layout is complete. - if (!isLaidOut()) { + // Sometimes, views are already laid out, but it's still + // not visible to the user, we also do the evaluation once + // the view is visible. ex: There is a fade-in animation + // for the activity, the view will be laid out when the + // animation beginning. On the time, the view is not visible + // to the user. And then as the animation progresses, the view + // becomes visible to the user. + if (!isLaidOut() || !isVisibleToUser()) { mPrivateFlags3 |= PFLAG3_NOTIFY_AUTOFILL_ENTER_ON_LAYOUT; } else if (isVisibleToUser()) { if (isFocused()) {