1

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

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

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

我将此文本添加到我的 android 清单文件中的活动中:android:windowSoftInputMode="adjustResize"

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

非常感谢任何帮助。

4

2 回答 2

1

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

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

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

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

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

于 2011-08-04T08:03:03.050 回答
0

创建一个输入法服务(参见http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html)来监听后退按钮可能会起作用。当它被按下时,你可以将它传递给你的活动,然后它会做你想做的事情,同时移除软键盘。

于 2011-04-18T17:08:02.050 回答