为什么软键盘会出现?

时间:2011-03-13 11:01:00

标签: android

我正在使用Android模拟器来测试我的第一个Android应用程序。虽然仿真器窗口右侧有一个功能正常的硬键盘,但在EditText控件中进行编辑时会显示软键盘。

我知道使用InputMethodManager实例隐藏软键盘的选项,但是我想知道为什么软键盘会出现(当硬键盘可用时)。

对我来说,作为一个用户,在这种情况下软键盘相当分散注意力,因此如果有用,我想摆脱它。 - 这个问题是关于实际情况(即,当有硬键盘时,软键盘是否有任何用途,现实设备的行为与模拟器类似)以及解决问题的一般策略。

感谢。我会提出任何有用的提示。

4 个答案:

答案 0 :(得分:1)

在我的G1上,当硬键盘打开时,软键盘没有出现。但是我不确定一个总是打开键盘的设备(如果我没弄错的话就像三星Galaxy PRO一样)也是如此。

由于模拟器没有滑动键盘,我认为这种情况就是这种情况。

答案 1 :(得分:1)

使用触摸屏设备+硬键盘,您可以灵活地使用它们。在大多数带有硬键盘的设备上,必须拖出键盘。点击屏幕要容易得多。如果你想输入很多东西,你可能会把键盘滑出去。

Android让您可以灵活地为所有这些行为进行编程。

答案 2 :(得分:1)

实际上,AVD模拟器 有一个滑出式键盘。 AVD选项“键盘支持”表示模拟设备是否具有任何形式的物理键盘。选项“键盘盖支持”表示设备是否具有可以打开或关闭的键盘(滑出或有什么)。 至于在使用这些选项设置的设备上实际“打开”和“关闭”键盘, 你需要切换方向,这通常是你用现实世界中的滑出式键盘手机所做的,例如:原来的Droid:

Original Droid with slide-out keyboard open

在模拟器中,您可以使用Ctrl+F11 / Ctrl+F127 / 9控制此方向更改(仅在数字键盘上,关闭NumLk )。 您可以通过选中值getResources().getConfiguration().hardKeyboardHidden == config.HARDKEYBOARDHIDDEN_YES

来确认键盘的打开和关闭状态

就软键盘是否出现而言,在我看来,处理这些事情取决于程序员。以下是您可以在AVD中尝试的示例:

  • 设置一个模拟器,其中“Keyboard support”和“Keyboard lid support”都设置为yes。
  • 启动模拟器,然后打开Android内置的Messaging应用程序。
  • 单击其中一个文本框 - 软键盘应显示。
  • 使用Ctrl + F12切换仿真器的方向 - 软键盘现在应该消失
    • 请注意,仿真器本身似乎存在问题,切换回纵向模式不会导致应用程序重新绘制回纵向布局。但是他们会切换回关闭的键盘模式,这会产生一些奇怪的横向行为。

有关捕捉键盘开启/关闭事件的代码示例,请查看:http://www.how-to-develop-android-apps.com/how-to-detect-screen-orientation-change-in-android/

答案 3 :(得分:0)

在现实世界的设备上测试后;在具有滑动键盘的摩托罗拉里程碑上,如果它打开,则不显示软键盘,但是当它关​​闭时,显示软键盘。在具有永久显示键盘的HTC Cha-Cha上,手机始终使用硬件键盘。即使在横向和硬键盘使用非常困难,它也不会显示软键盘(即使安装了软键盘,我也无法在键盘和语言设置下选择使用它。)

有关手机的其他信息,您可以使用以下内容。它们将返回键盘类型以及是否为硬键盘并显示。注意:我测试的没有硬键盘的手机报告说hardKeyboardHidden = 2; (表示隐藏=是),但键入报告为软键盘是有意义的。

    Configuration config = getContext().getResources().getConfiguration();
    int keyboardHidden=config.hardKeyboardHidden;
    int keyboard=config.keyboard;

http://developer.android.com/reference/android/content/res/Configuration.html#HARDKEYBOARDHIDDEN_NO

相关问题