当与视图后面的窗口交互时,视图集作为透明的应用程序覆盖块向后按钮和键盘



我已经设置了一个视图,该视图覆盖了整个设备上透明的红色过滤器,但是允许触摸事件通过。这在API级别21-25上正常工作,但是在26中单击任何应用程序中的文本字段时,键盘不会出现,并且在按下时,Back按钮均未响应,所有其他触摸事件似乎都可以通过。

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(android.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);

这是我设置视图的方式,我可以设置一些标志来修复键盘和后按钮问题。

以下配置对我有用,尝试使用下面的标志(特别注意WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE(:

WindowManager.LayoutParams(
    WindowManager.LayoutParams.MATCH_PARENT,
    WindowManager.LayoutParams.MATCH_PARENT,
    WindowManager.LayoutParams.TYPE_PHONE,
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
    PixelFormat.TRANSPARENT
)

希望它有帮助

最新更新