【问题标题】:detect soft keyboard being hidden检测软键盘被隐藏
【发布时间】:2011-08-08 01:14:44
【问题描述】:

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

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

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

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

但我不太确定如何检测更改。

非常感谢任何帮助。

【问题讨论】:

标签: android hidden detect android-softkeyboard


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      • 2023-01-09
      相关资源
      最近更新 更多