现在在搜索界面,弹出软键盘后,如果点击搜索界面空白处,这个界面就会被激活到前台,软键盘被隐藏在后面看不到。
在其它程序(如message没有这个问题)。
这似乎是程序窗口之间切换的问题,请问要怎么样才能解决这个问题?

解决方案 »

  1.   

    search这个程序不是真正的widget或者activity,它是画在launcher上面的,所以会出现将软键盘挡住的情况。
      

  2.   

    http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/java/android/app/SearchDialog.java;h=e5a769bb59dd6161be38dd1d6e2831106650c611;hb=HEAD去这边看下代码吧,里面有具体的searchDialog是如何显示的。
      

  3.   

    看了下searchDialog的显示过程,可是并没有看到它是怎么覆盖软键盘的。
      

  4.   

    额 软键盘其实就是另外一个service,它启动起来会占据当前activity的屏幕,但是当你点击searchDialog的时候,由于它并不是通过launcher来绘制自己界面的,所以就会将全部屏幕重绘了。
      

  5.   

    这个问题有办法解决么?请问相应这个touch实现重绘的相关代码在哪里?当出现软键盘的时候,searchDialog的区域会缩小留出空间,可为什么重绘的时候这个区域就变成全屏了呢?
      

  6.   

    方法一:
    在searchDialog的onCreate里面,有定义dialog 的window属性为FILL_PARENT,你可以在onTouchEvent里面做处理。将其window属性改掉,我想这样可以试一下。方法二:
    在Launcher的workspace.java中,修改onTouchEvent,onDraw,dispatchDraw相关代码,使searchDialog不要全屏。
      

  7.   

    这几个函数只是在开始创建的时候进入,后来覆盖软键盘的那次touch和重绘时都没有进入
      

  8.   

    workspace.java里面的OnInterceptTouchEvent呢?所有的屏幕消息都是由这边分发的。
      

  9.   

    这是窗口管理服务的功能,可由WindowManager.LayoutParams控制,FLAG_NOT_FOCUSABLE 、FLAG_NOT_TOUCH_MODAL、FLAG_NOT_TOUCHABLE等控制鼠标消息分发,FLAG_ALT_FOCUSABLE_IM等控制跟输入法间的关系。
      

  10.   

    我设了 FLAG_NOT_FOCUSABLE 和 FLAG_ALT_FOCUSABLE_IM 这两个flag,可是不起作用
      

  11.   

    设了FLAG_NOT_FOCUSABLE 和 FLAG_ALT_FOCUSABLE_IM之后,搜索对话框下面的白色部分不出现了,而且输入的字符不会在文本框里面直接打印出来
      

  12.   

    android 2.3 Launcher2 中,default_workspace.xml中的search标签,他是如何被定义的呢?
      

  13.   

    大家好,我有个问题问下:
    如果我要修改searchdialog的上下文菜单,怎么弄(就是长按文本框,弹出来的上下文菜单)