当与视图后面的窗口交互时,java将视图集设置为透明应用程序覆盖,阻止Oreo上的后退按钮和键盘
我已经设置了一个视图,在设备上覆盖一个透明的红色过滤器,允许触摸事件通过。这在api级别21-25上运行良好,但在api级别26上,当单击任何应用程序中的文本字段时,键盘不会弹出,按下后退按钮时不会响应,所有其他触摸事件都会正常通过
wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
topView = new View(this);
topView.setAlpha(0.3f);
topView.setBackgroundColor(0xFFFF0000);
WindowManager.LayoutParams topParams;
//Need to use a swap from TYPE_SYSTEM_OVERLAY to TYPE_APPLICATION_OVERLAY when api => 26
if(安卓.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
topParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
}else{
topParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
}
wm.addView(topView, topParams);
这是我如何设置视图的,是否有一些标志我可以设置来修复键盘和后退按钮的问题
# 1 楼答案
以下配置对我有效,请尝试使用下面的标志(特别注意
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
):希望能有帮助