【问题标题】:Window manager blocking keyboard for apps underneath floating chat head窗口管理器阻止浮动聊天头下方应用程序的键盘
【发布时间】:2020-05-21 09:15:08
【问题描述】:

我有一个应用程序,我在其中实现了聊天头,就像 facebook messenger 应用程序一样它工作正常,但是一旦我的浮动聊天头使用键盘,其他应用程序就无法打开键盘。我正在使用窗口管理器来显示浮动视图,这就是我在窗口管理器中设置布局参数的方式

public static WindowManager.LayoutParams getWindowManagerOutsideRoom(){
        final WindowManager.LayoutParams params;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            params = new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.MATCH_PARENT,
                    WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL ,
                    PixelFormat.TRANSLUCENT);
        } else {
            params = new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.MATCH_PARENT,
                    WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.TYPE_PHONE,
                    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL ,
                    PixelFormat.TRANSLUCENT);
        }
        params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
        return params;
    } ```

any help in this regard will me much appreciated 

【问题讨论】:

    标签: android service keyboard-events android-windowmanager


    【解决方案1】:

    所以我自己通过阅读窗口管理器标志来解决这个问题,解决方案是在你想要处理触摸时使用不同的标志,而不是在不处理时使用不同的标志,发布 sn-p ``

    public static WindowManager.LayoutParams enableKeyPadInput(Boolean enable) {
            final WindowManager.LayoutParams params;
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
                if (enable) {
                    params = new WindowManager.LayoutParams(
                            WindowManager.LayoutParams.MATCH_PARENT,
                            WindowManager.LayoutParams.WRAP_CONTENT,
                            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                            PixelFormat.TRANSLUCENT);
    
                } else {
                    params = new WindowManager.LayoutParams(
                            WindowManager.LayoutParams.MATCH_PARENT,
                            WindowManager.LayoutParams.WRAP_CONTENT,
                            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                            PixelFormat.TRANSLUCENT);
                }
            } else {
                if (enable) {
                    params = new WindowManager.LayoutParams(
                            WindowManager.LayoutParams.MATCH_PARENT,
                            WindowManager.LayoutParams.WRAP_CONTENT,
                            WindowManager.LayoutParams.TYPE_PHONE,
                            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                            PixelFormat.TRANSLUCENT);
    
                } else {
                    params = new WindowManager.LayoutParams(
                            WindowManager.LayoutParams.MATCH_PARENT,
                            WindowManager.LayoutParams.WRAP_CONTENT,
                            WindowManager.LayoutParams.TYPE_PHONE,
                            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                            PixelFormat.TRANSLUCENT);
                }
            }
    
            params.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
            params.gravity = Gravity.BOTTOM;
            return params;
        }
    

    ``

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 2015-05-05
      • 2019-05-27
      • 2019-08-03
      • 2016-10-24
      相关资源
      最近更新 更多