有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当与视图后面的窗口交互时,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) 个答案

  1. # 1 楼答案

    以下配置对我有效,请尝试使用下面的标志(特别注意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
    )
    

    希望能有帮助