onConfigurationChanged()不能触发keyboardHidden

我已经按照这里的各种问题和答案来设置我的Android活动来覆盖onConfigurationChanged() ,以便在软键盘打开和closures时执行逻辑。 这里是我的代码的相关摘录。 我把它归结为最简单的情况:

AndroidManifest.xml

 ... <activity android:name=".SearchActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation" /> ... 

SearchActivity.java

 ... @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Toast.makeText(this, "onConfigurationChanged()", Toast.LENGTH_SHORT).show(); } ... 

上面的代码将显示Toast,当我改变方向时,但在软键盘打开或closures时不做任何事情。 我已经testing了通过EditText聚焦打开软键盘,并通过长按菜单button手动打开软键盘。 不要触发onConfigurationChanged()调用。

因此,由于方向更改激活,代码就可以正常工作,但是对于软键盘我什么也得不到。 有任何想法吗? 如果答案是“onConfigurationChanged()不能捕获软键盘事件”,那么检测和处理这个事件的适当的解决scheme是什么?

为了以防万一,我正在testing运行姜饼的Droid X。

Solutions Collecting From Web of "onConfigurationChanged()不能触发keyboardHidden"

不,onConfigurationChange()不会捕获软键盘事件:它不是configuration更改。 方向改变导致使用一组新的资源(例如layout-land vs layout-port),这是configuration改变的定义。

那么该怎么做呢? 那么,键盘显示时不会触发事件,但是您可以检测到键盘导致布局调整的时间。

请参阅如何检查Android中软件键盘的可见性? 为代码。