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

3个回答

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

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

遇到了和题主一样的问题,解决了吗? 我现在在自定义一个输入键盘和忽视返回键之间取舍,估计会弄个简单的输入键盘。

想到了,点击edittext时候去改变windowParams.flags 的值,用 windowManager.updateViewLayout(view, layoutParams);刷新。

监听键盘,键盘收起来的时候再去改一下windowParams.flags ,再用用 windowManager.updateViewLayout(view, layoutParams)刷新就行了。有很有效!

又来了,现在要做的就是在services中监听键盘的收起和弹出,github上找到一个项目 https://github.com/pqpo/InputMethodHolder,在我的小米手机上无效。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!