我正在使用以下布局参数向Windows Manager添加视图:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.TYPE_accESSIBILITY_OVERLAY,WindowManager.LayoutParams.flaG_NOT_TOUCHABLE |
WindowManager.LayoutParams.flaG_NOT_FOCUSABLE |
WindowManager.LayoutParams.flaG_ALT_FOCUSABLE_IM |
WindowManager.LayoutParams.flaG_WATCH_OUTSIDE_TOUCH,PixelFormat.TRANSLUCENT
);
预期结果是一个覆盖窗口,该窗口覆盖除系统ui(导航栏和状态栏)之外的整个屏幕,并且不覆盖软键盘。
上面的参数可以做到这一点,但是问题是在打开软键盘时导航栏按钮不可见。
我已经尝试了一些标志,例如:
WindowManager.LayoutParams.flaG_LAYOUT_ATTACHED_IN_DECOR
以及以下各项的组合:
WindowManager.LayoutParams.flaG_LAYOUT_INSET_DECOR
WindowManager.LayoutParams.flaG_LAYOUT_IN_SCREEN
但是他们都不起作用。
我也经历了documentation for system ui,但是其中涉及WindowManager.LayoutParams
标志的大多数选项是用于隐藏装饰,其余的都需要引用窗口,我认为我无法从中得到辅助功能服务。
问题似乎是:
WindowManager.LayoutParams.flaG_ALT_FOCUSABLE_IM
标志,如果我将其删除,导航按钮是可见的,但是覆盖层将覆盖键盘,即使我使用如下命令也可以做到这一点:
params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
我的问题:
有什么办法可以使覆盖层不覆盖键盘并且不隐藏导航栏按钮?