Omit NavigationGuard if the input method uses FLAG_LAYOUT_IN_OVERSCAN
am: 9b32a35aa7
Change-Id: I1576235d933d467963a4522e138036fca3e49891
This commit is contained in:
@@ -96,6 +96,7 @@ import static android.view.Window.DECOR_CAPTION_SHADE_LIGHT;
|
|||||||
import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
|
import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
import static android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR;
|
import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR;
|
||||||
|
import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
|
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_NAVIGATION;
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
|
import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
|
||||||
@@ -969,7 +970,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
|
|||||||
mFrameOffsets.set(insets.getSystemWindowInsets());
|
mFrameOffsets.set(insets.getSystemWindowInsets());
|
||||||
insets = updateColorViews(insets, true /* animate */);
|
insets = updateColorViews(insets, true /* animate */);
|
||||||
insets = updateStatusGuard(insets);
|
insets = updateStatusGuard(insets);
|
||||||
updateNavigationGuard(insets);
|
insets = updateNavigationGuard(insets);
|
||||||
if (getForeground() != null) {
|
if (getForeground() != null) {
|
||||||
drawableChanged();
|
drawableChanged();
|
||||||
}
|
}
|
||||||
@@ -1329,9 +1330,11 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
|
|||||||
return insets;
|
return insets;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateNavigationGuard(WindowInsets insets) {
|
private WindowInsets updateNavigationGuard(WindowInsets insets) {
|
||||||
// IMEs lay out below the nav bar, but the content view must not (for back compat)
|
// IME windows lay out below the nav bar, but the content view must not (for back compat)
|
||||||
if (mWindow.getAttributes().type == WindowManager.LayoutParams.TYPE_INPUT_METHOD) {
|
// Only make this adjustment if the window is not requesting layout in overscan
|
||||||
|
if (mWindow.getAttributes().type == WindowManager.LayoutParams.TYPE_INPUT_METHOD
|
||||||
|
&& (mWindow.getAttributes().flags & FLAG_LAYOUT_IN_OVERSCAN) == 0) {
|
||||||
// prevent the content view from including the nav bar height
|
// prevent the content view from including the nav bar height
|
||||||
if (mWindow.mContentParent != null) {
|
if (mWindow.mContentParent != null) {
|
||||||
if (mWindow.mContentParent.getLayoutParams() instanceof MarginLayoutParams) {
|
if (mWindow.mContentParent.getLayoutParams() instanceof MarginLayoutParams) {
|
||||||
@@ -1356,7 +1359,10 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
|
|||||||
mNavigationGuard.setLayoutParams(lp);
|
mNavigationGuard.setLayoutParams(lp);
|
||||||
}
|
}
|
||||||
updateNavigationGuardColor();
|
updateNavigationGuardColor();
|
||||||
|
insets = insets.consumeSystemWindowInsets(
|
||||||
|
false, false, false, true /* bottom */);
|
||||||
}
|
}
|
||||||
|
return insets;
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateNavigationGuardColor() {
|
void updateNavigationGuardColor() {
|
||||||
|
|||||||
Reference in New Issue
Block a user