diff options
| author | Tiger Huang <tigerhuang@google.com> | 2020-02-21 06:35:22 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-02-21 06:35:22 +0000 |
| commit | 4fd8cb50894f4eea6d2dead36412eac946b06d24 (patch) | |
| tree | 12ec4d72d09f38781c7930b6b51afeabf13c6ea4 /core/java/android/view/ViewRootImpl.java | |
| parent | ce28526727beb9ba0976caf2e040ed026f54fd4d (diff) | |
| parent | 07b0733bdedbfcbe4523533b39cc053375d5ac8c (diff) | |
Merge "Adjust LayoutParams after handling soft input mode"
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 204d2c8bc2ce..6b2dc814f37e 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -31,6 +31,7 @@ import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; import static android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; import static android.view.View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; import static android.view.View.SYSTEM_UI_FLAG_LOW_PROFILE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.WindowCallbacks.RESIZE_MODE_DOCKED_DIVIDER; import static android.view.WindowCallbacks.RESIZE_MODE_FREEFORM; import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS; @@ -39,10 +40,12 @@ import static android.view.WindowInsetsController.APPEARANCE_LOW_PROFILE_BARS; import static android.view.WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_SWIPE; import static android.view.WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_TOUCH; import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE; +import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN; import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION; import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; +import static android.view.WindowManager.LayoutParams.LAST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_APPEARANCE_CONTROLLED; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_BEHAVIOR_CONTROLLED; @@ -2067,9 +2070,12 @@ public final class ViewRootImpl implements ViewParent, } final int sysUiVis = params.systemUiVisibility | params.subtreeSystemUiVisibility; final int flags = params.flags; + final boolean matchParent = params.width == MATCH_PARENT && params.height == MATCH_PARENT; + final boolean nonAttachedAppWindow = params.type >= FIRST_APPLICATION_WINDOW + && params.type <= LAST_APPLICATION_WINDOW; final boolean statusWasHiddenByFlags = (mTypesHiddenByFlags & Type.statusBars()) != 0; final boolean statusIsHiddenByFlags = (sysUiVis & SYSTEM_UI_FLAG_FULLSCREEN) != 0 - || (flags & FLAG_FULLSCREEN) != 0; + || ((flags & FLAG_FULLSCREEN) != 0 && matchParent && nonAttachedAppWindow); final boolean navWasHiddenByFlags = (mTypesHiddenByFlags & Type.navigationBars()) != 0; final boolean navIsHiddenByFlags = (sysUiVis & SYSTEM_UI_FLAG_HIDE_NAVIGATION) != 0; @@ -2434,8 +2440,6 @@ public final class ViewRootImpl implements ViewParent, params = lp; } if (sNewInsetsMode == NEW_INSETS_MODE_FULL) { - adjustLayoutParamsForCompatibility(lp); - controlInsetsForCompatibility(lp); handleDispatchSystemUiVisibilityChanged(mCompatibleVisibilityInfo); } @@ -2530,6 +2534,8 @@ public final class ViewRootImpl implements ViewParent, && !PixelFormat.formatHasAlpha(params.format)) { params.format = PixelFormat.TRANSLUCENT; } + adjustLayoutParamsForCompatibility(params); + controlInsetsForCompatibility(params); } if (mFirst || windowShouldResize || insetsChanged || |
