Android 悬浮窗弹不出输入法的踏坑之路

前言
在进行悬浮窗开发过程中,曾经遇到EditText输入框弹不出输入法的问题,现在就来将踏坑之路分享一下
1.WindowManager 实例化

WindowManager mWindowManager = (WindowManager) mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);

必须通过Applictaion来获取窗口服务,不能通过Context上下文来获取窗口服务
2.flags属性的设置

LayoutParams.FLAG_NOT_TOUCH_MODAL的意思是:

        /**
         窗口标志:即使该窗口是可对焦的(其#FLAG_NOT_FOCUSABLE未设置),
         允许窗口外的任何指针事件发送到其后面的窗口。
         否则它将消耗所有指针事件本身,而不管它们是否在窗口内。
          */
        public static final int FLAG_NOT_TOUCH_MODAL    = 0x00000020;
即不会阻挡后面的点击事件

即:

LayoutParams params = new LayoutParams();
            params.x = screenWidth - 400;
            params.y = screenHeight / 2 + 150;
            params.width = LayoutParams.WRAP_CONTENT;
            params.height = LayoutParams.WRAP_CONTENT;
            params.gravity = Gravity.LEFT | Gravity.TOP;
            params.type = LayoutParams.TYPE_APPLICATION_OVERLAY;
            params.format = PixelFormat.RGBA_8888;
            params.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL;
            //设置 WindowManager的参数flags属性为 params.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL;
            mFloatMainView.setLayoutParams(params);
            windowManager.addView(mFloatMainView, params);
        这样就可以在 悬浮窗弹出输入法

你可能感兴趣的:(android)