问题描述
- android写了一个悬浮窗,但是输入法显示不出来了,希望能得到朋友们的帮助,谢谢了。
-
用android编写了悬浮窗,项目是用Unity3d做的,项目中的输入法软键盘无法显示了,能接收到按键,但是软键盘看不到。
windowParams的参数如下,主要的问题在flags
windowParams.type = LayoutParams.TYPE_PHONE;windowParams.format = PixelFormat.RGBA_8888;
windowParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
| LayoutParams.FLAG_NOT_FOCUSABLE;
如果我只设置成windowParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL这样的话,输入法是可以启动的,但是手机的返回键得不到反馈了,
如果我只设置成windowParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE这样的话,输入法就无法显示出来。
设置成这样windowParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL| LayoutParams.FLAG_NOT_FOCUSABLE; 输入法还是无法显示。
windowParams.flags = LayoutParams.FLAG_ALT_FOCUSABLE_IM| LayoutParams.FLAG_NOT_FOCUSABLE; 输入法还是无法显示。
这样的flags改如何设置呢?
求助~~
解决方案
请问楼主解决了吗,我只能用不能获取返回键那个方式,但是如何获取到返回键啊
解决方案二:
自己写个按钮,写个关闭悬浮框的办法,曲线救国一下
mWindowManager.removeView(mView);
用removeView方法关闭悬浮框
解决方案三:
同样的问题,折腾了很久,找到答案,瞬间觉得蛋疼。。。
我的解决办法如下,不知道适不适合你们
问题出在WindowManager的实例获取方式不对
之前是这样获取的:
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
改这样就ok了:
mWindowManager = (WindowManager) mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
一个是通过当前activity的上下文环境去获取窗口服务,一个是通过application去获取窗口服务
原理没完全理解,至少问题解决了,有空再去看看 2个环境变量有什么区别吧
解决方案四:
同样的问题,折腾了很久,找到答案,瞬间觉得蛋疼。。。
我的解决办法如下,不知道适不适合你们
问题出在WindowManager的实例获取方式不对
之前是这样获取的:
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
改这样就ok了:
mWindowManager = (WindowManager) mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
一个是通过当前activity的上下文环境去获取窗口服务,一个是通过application去获取窗口服务
原理没完全理解,至少问题解决了,有空再去看看 2个环境变量有什么区别吧