聊天头种与编辑文本弹出。但点击里面的键盘不会弹出
问题描述:
我已经实现了聊天头类型为我的应用程序使用服务弹出。我在里面使用了编辑文本。聊天头种与编辑文本弹出。但点击里面的键盘不会弹出
但问题是,当我点击编辑文本只有光标是可见的,键盘不会弹出。甚至无法选择或复制粘贴该编辑文本内的文本。任何帮助?谢谢
答
我找到了解决我的问题。
我用下面的代码前面: -
全局变量: -
private WindowManager mWindowManager;
WindowManager.LayoutParams params;
然后在服务的onCreate
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
//Add the view to the window.
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
问题是与FLAG_NOT_FOCUSABLE,使用FLAG_NOT_TOUCH_MODAL代替。
但现在又的问题是,虽然我可以用我的floatingView拿到键盘,但键盘不来的其他应用程序,甚至后退按钮停止工作。
因此,要解决这个问题我用浮动这使浮动UI键盘和禁用之间切换UI按钮,这样后退按钮和键盘适用于其他应用程序。
我用下面的代码是一样的: -
private void enableKeyPadInput(Boolean enable) {
mWindowManager.removeViewImmediate(mFloatingView);
if (enable) {
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
} else {
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
}
mWindowManager.addView(mFloatingView, params);
}
如果真被传递给这个方法,然后键盘开始工作。如果传递false,则其他应用程序开始工作。
这是我对这个问题的解决方法。有没有其他方法可以达到比这更好的效果?
你能发表一些代码吗? –