检测隐藏的软键盘

时间:2011-04-18 16:54:59

标签: android hidden detect android-softkeyboard

我有一个带编辑框的活动,当用户触摸编辑框时,软键盘出现。如果用户按下硬件“后退”按钮,软键盘就会消失。我想发现这种情况。我环顾四周,到目前为止我看到的最好的回答就是这个:

http://groups.google.com/group/android-developers/browse_thread/thread/9d1681a01f05e782

我的问题是 - 如何检测应用程序窗口是否已调整大小?

我将此文本添加到我的android清单文件中的活动中: 机器人:windowSoftInputMode = “adjustResize”

但我不太确定如何检测变化。

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:1)

Android不提供用于检查键盘是否可见的API。但是,您可以关闭顶层布局的高度以确定此信息。

首先,你必须将你的活动的android:windowSoftInputMode属性设置为“adjustResize”。

然后,创建一个扩展所需布局类型的新类(例如LinearLayout)。在该类中,您可以覆盖一些不同的方法,这些方法将随着布局高度的变化而调用(由于键盘被显示或隐藏)。触发这些调用后,您可以将布局的高度与屏幕的高度进行比较。如果两者之间存在实质性差异(即不仅仅是通知栏的大小),则键盘可见。

最后,请确保将新类用作布局xml中的顶级布局(例如,代替LinearLayout)。

如果您想要更全面的解释,我已经写了一个:http://www.cannedcoding.com/2011/08/soft-keyboard.html

答案 1 :(得分:0)

创建输入法服务(请参阅http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html)以监听后退按钮可能有效。按下它时,您可以将其传递给您的活动,然后执行您想要的操作以及移除软键盘。