用addOnLayoutChangeListener也不行 得到的尺寸始终是 800*480

解决方案 »

  1.   

    这个问题我也遇到过,但似乎还没有很好的解决办法。据我了解,这个隐藏按钮是输入法自己设置的,不是系统规定的,所以它的触发事件不会被系统响应。
    我的处理方法:
    1.如果响应隐藏按钮是为了关闭EditText,那可以在屏幕上显示EditText,让用户自行关闭EditText
    2.可以通过监听返回键来判断是否关闭输入法。
    这两种方法都是绕弯路,并且没能直接解决监听隐藏按钮的问题。
      

  2.   

    返回键我倒是监听并且Log了,但隐藏时并没有按键,没有返回键也没有回车键(可能不同的输入法实现不同)我找到一个开源的输入法源码查看了,似乎点击隐藏的时候,输入法只是把自己的窗口注销了,没做别的
    https://codeload.github.com/hilarycheng/another_android_cangjie/zip/master
    (CloseButton.java)我主要是想点击那个向下隐藏按钮的时候,让程序退出输入状态。就像点“完成”、“返回”时一样的效果,
    目前是实现不了了,只能让用户再点一次编辑框,再点完成或者返回。(比如在屏幕下半部分画个提示文字)另外我发现addOnLayoutChangeListener实际上是可以的,前提是程序不是全屏模式,在非全屏模式下,回调
    procedure onLayoutChange(v: JView; left: Integer; top: Integer; right: Integer; bottom: Integer; oldLeft: Integer; oldTop: Integer; oldRight: Integer; oldBottom: Integer); cdecl;
    给的参数是对的,但一旦设置为全屏 就傻了像QQ欢乐斗地主之类,它里面的输入法(应该是用了cocos2d-x),应该是建立了个Cocos2dxEditText (extends EditText)然后提到前台,是创建了Java的Edit控件,然后打开的输入法。此时是非全屏模式,如果用手指从顶部往下拉,可以看到状态栏出来了,同时Edit被压缩得更小,过一会儿,状态栏会自动隐藏,此时Edit又自动扩大了,我想,它应该是用的wrap_content选项,而且它应该就是通过onLayout/onSize之类的判断输入法是否关闭,当输入法关了的时候,onLayout/onSize的参数会变大,这时候就知道:输入法被关闭了,然后就退出编辑模式,返回来。。我就不知道它的状态栏会自动隐藏是怎么做的?
      

  3.   

    如果能做到:非全屏模式,但状态栏会自动隐藏,那么就是变相的全屏模式同时又能得到正确的OnLayout,
    也可以