onConfigurationChanged() 不为键盘触发Hidden

2022-09-02 13:44:26

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

AndroidManifest.xml

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

搜索活动.java

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

当我更改方向时,上面的代码将显示 Toast,但在软键盘打开或关闭时不执行任何操作。我已经测试过通过EditText对焦打开软键盘,并通过长按菜单按钮手动打开它。两者都不打电话。onConfigurationChanged()

因此,由于方向更改触发,因此到位的代码似乎有效,但是对于软键盘,我什么也没得到。有什么想法吗?如果答案是“onConfigurationChanged() 不捕获软键盘事件”,那么检测和处理此事件的适当解决方案是什么?

为了以防万一,我正在运行姜饼的Droid X上进行测试。


答案 1

不,onConfigurationChange() 不会捕获软键盘事件:它不是配置更改。方向更改会导致使用一组新的资源(例如布局-土地与布局-端口),这是配置更改的定义。

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

有关代码,请参阅如何检查软件键盘在 Android 中的可见性?


答案 2

推荐