Merge "Don't let IME window fit status bar" into rvc-qpr-dev am: 022e779ae5
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12629660 Change-Id: I2882852ce7cd8e4c8b9061227f32220b96cf8264
This commit is contained in:
@@ -16,11 +16,11 @@
|
|||||||
|
|
||||||
package android.inputmethodservice;
|
package android.inputmethodservice;
|
||||||
|
|
||||||
|
import static android.graphics.Color.TRANSPARENT;
|
||||||
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
||||||
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
|
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||||
import static android.view.ViewRootImpl.NEW_INSETS_MODE_NONE;
|
import static android.view.ViewRootImpl.NEW_INSETS_MODE_NONE;
|
||||||
import static android.view.WindowInsets.Type.navigationBars;
|
import static android.view.WindowInsets.Type.navigationBars;
|
||||||
import static android.view.WindowInsets.Type.statusBars;
|
|
||||||
import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
|
import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
|
||||||
|
|
||||||
import static java.lang.annotation.RetentionPolicy.SOURCE;
|
import static java.lang.annotation.RetentionPolicy.SOURCE;
|
||||||
@@ -69,7 +69,6 @@ import android.view.ViewGroup;
|
|||||||
import android.view.ViewRootImpl;
|
import android.view.ViewRootImpl;
|
||||||
import android.view.ViewTreeObserver;
|
import android.view.ViewTreeObserver;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.view.WindowInsets;
|
|
||||||
import android.view.WindowInsets.Side;
|
import android.view.WindowInsets.Side;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
@@ -1203,25 +1202,22 @@ public class InputMethodService extends AbstractInputMethodService {
|
|||||||
Context.LAYOUT_INFLATER_SERVICE);
|
Context.LAYOUT_INFLATER_SERVICE);
|
||||||
mWindow = new SoftInputWindow(this, "InputMethod", mTheme, null, null, mDispatcherState,
|
mWindow = new SoftInputWindow(this, "InputMethod", mTheme, null, null, mDispatcherState,
|
||||||
WindowManager.LayoutParams.TYPE_INPUT_METHOD, Gravity.BOTTOM, false);
|
WindowManager.LayoutParams.TYPE_INPUT_METHOD, Gravity.BOTTOM, false);
|
||||||
mWindow.getWindow().getAttributes().setFitInsetsTypes(statusBars() | navigationBars());
|
mWindow.getWindow().getAttributes().setFitInsetsTypes(navigationBars());
|
||||||
mWindow.getWindow().getAttributes().setFitInsetsSides(Side.all() & ~Side.BOTTOM);
|
mWindow.getWindow().getAttributes().setFitInsetsSides(Side.all() & ~Side.BOTTOM);
|
||||||
mWindow.getWindow().getAttributes().setFitInsetsIgnoringVisibility(true);
|
mWindow.getWindow().getAttributes().setFitInsetsIgnoringVisibility(true);
|
||||||
|
|
||||||
// IME layout should always be inset by navigation bar, no matter its current visibility,
|
// Our window will extend into the status bar area no matter the bar is visible or not.
|
||||||
// unless automotive requests it. Automotive devices may request the navigation bar to be
|
// We don't want the ColorView to be visible when status bar is shown.
|
||||||
// hidden when the IME shows up (controlled via config_automotiveHideNavBarForKeyboard)
|
mWindow.getWindow().setStatusBarColor(TRANSPARENT);
|
||||||
// in order to maximize the visible screen real estate. When this happens, the IME window
|
|
||||||
// should animate from the bottom of the screen to reduce the jank that happens from the
|
// Automotive devices may request the navigation bar to be hidden when the IME shows up
|
||||||
// lack of synchronization between the bottom system window and the IME window.
|
// (controlled via config_automotiveHideNavBarForKeyboard) in order to maximize the visible
|
||||||
|
// screen real estate. When this happens, the IME window should animate from the bottom of
|
||||||
|
// the screen to reduce the jank that happens from the lack of synchronization between the
|
||||||
|
// bottom system window and the IME window.
|
||||||
if (mIsAutomotive && mAutomotiveHideNavBarForKeyboard) {
|
if (mIsAutomotive && mAutomotiveHideNavBarForKeyboard) {
|
||||||
mWindow.getWindow().setDecorFitsSystemWindows(false);
|
mWindow.getWindow().setDecorFitsSystemWindows(false);
|
||||||
}
|
}
|
||||||
mWindow.getWindow().getDecorView().setOnApplyWindowInsetsListener(
|
|
||||||
(v, insets) -> v.onApplyWindowInsets(
|
|
||||||
new WindowInsets.Builder(insets).setInsets(
|
|
||||||
navigationBars(),
|
|
||||||
insets.getInsetsIgnoringVisibility(navigationBars()))
|
|
||||||
.build()));
|
|
||||||
|
|
||||||
// For ColorView in DecorView to work, FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS needs to be set
|
// For ColorView in DecorView to work, FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS needs to be set
|
||||||
// by default (but IME developers can opt this out later if they want a new behavior).
|
// by default (but IME developers can opt this out later if they want a new behavior).
|
||||||
|
|||||||
Reference in New Issue
Block a user