2 q410446791 q410446791 于 2013.12.13 20:54 提问

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改如何设置呢?
求助~~

4个回答

haorenh123
haorenh123   2015.05.21 10:30

请问楼主解决了吗,我只能用不能获取返回键那个方式,但是如何获取到返回键啊

yinkgh
yinkgh   2015.07.29 09:01

自己写个按钮,写个关闭悬浮框的办法,曲线救国一下
mWindowManager.removeView(mView);
用removeView方法关闭悬浮框

Martin__Zy
Martin__Zy   2015.11.30 16:16

同样的问题,折腾了很久,找到答案,瞬间觉得蛋疼。。。
我的解决办法如下,不知道适不适合你们
问题出在WindowManager的实例获取方式不对
之前是这样获取的:
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
改这样就ok了:
mWindowManager = (WindowManager) mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
一个是通过当前activity的上下文环境去获取窗口服务,一个是通过application去获取窗口服务
原理没完全理解,至少问题解决了,有空再去看看 2个环境变量有什么区别吧

Martin__Zy
Martin__Zy   2015.11.30 16:16

同样的问题,折腾了很久,找到答案,瞬间觉得蛋疼。。。
我的解决办法如下,不知道适不适合你们
问题出在WindowManager的实例获取方式不对
之前是这样获取的:
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
改这样就ok了:
mWindowManager = (WindowManager) mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
一个是通过当前activity的上下文环境去获取窗口服务,一个是通过application去获取窗口服务
原理没完全理解,至少问题解决了,有空再去看看 2个环境变量有什么区别吧

Csdn user default icon
上传中...
上传图片
插入图片