86

我是安卓新手。我已经花了两个小时搜索。无论我尝试什么软键盘都不会为我的EditText. 我简单地创建它:

EditText editText = (EditText)findViewById(R.id.editText);

我试过:

 editText.requestFocus();//i tried without this line too
 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

和:

editText.setOnFocusChangeListener(new OnFocusChangeListener() {

         @Override
         public void onFocusChange(View v, boolean hasFocus) 
         {    

                     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                     imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

         }
     });

我也试过:

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

我尝试将此行放入AndroidManifest.xml文件中:

 android:windowSoftInputMode="stateVisible|adjustResize"

但一切都是徒劳的。它只是从不显示。我错过了什么?

4

6 回答 6

212

您需要确保您的模拟器没有设置为使用硬件键盘。这可以通过Edit在 AVD 中选择一个选定的仿真器来完成。然后取消选中设置Hardware keyboard present

您也可以尝试使用不同的模拟器,例如Genymotion。它支持完整的硬件加速(多核 CPU 和 GPU)并且运行速度比任何 android 模拟器图像都要快。如果您使用 Genymotion,您需要在 Android 中禁用硬件键盘(详见下文)。

要在 Genymotion 中禁用硬件键盘:转到
- Settings>Language & input并打开Default. Keyboard & Input Methods有一个Hardware设置可以打开/关闭。当它打开时,您使用物理键盘,当它关闭时,只要文本字段获得焦点,就会弹出标准软键盘。

Genymotion 设置截图: 默认项目

在此处输入图像描述

于 2013-08-17T12:14:30.210 回答
73

在 2.1.1 版本中 - 单击您的虚拟设备设置 - 然后选择“使用虚拟键盘进行打字”复选框。 在此处输入图像描述

在此处输入图像描述

于 2014-06-30T09:53:51.003 回答
3

为 Android Studio 2+ 模拟器启用屏幕软键盘的方法取决于模拟器的 API 级别。我已经测试了从 API 15 开始的各种方法,并记录了以下步骤。

[A] API 15、17、19 和 21。

以下步骤将启用屏幕软键盘,但将禁用使用硬件计算机键盘输入文本和与 AVD 交互的能力。

  1. 在 Android 虚拟设备管理器 (AVD) 中,单击您要使用的设备的编辑操作
  2. 单击显示高级设置并向下滚动到页面底部的“键盘”部分
  3. 取消选中“启用键盘输入”选项

[B] API 22

无论您对硬件键盘设置做什么,都会显示软键盘。如果您希望在软键盘旁边启用硬件键盘支持,那么,

  1. 在 AVD 中,单击您要使用的设备的编辑操作
  2. 单击显示高级设置并向下滚动到页面底部的“键盘”部分
  3. 勾选“启用键盘输入”选项

[C] API 23

如果您想使用硬件和软键盘,那么...

  1. 按照 [B] 步骤 1 至 3
  2. 在虚拟设备上,启动设置,然后选择语言和输入/当前键盘
  3. 启用硬件 - 显示输入法

如果您不需要硬件键盘,在 AVD 高级设置中,取消选中“启用键盘输入”选项。您无需更改虚拟设备上的任何设置。

[D] API 24 和 25

  1. 按照上面的 [B] 步骤 1 到 3,根据您是否要启用硬键盘,选中或取消选中“启用键盘输入”选项。
  2. 在虚拟设备上,启动设置,然后选择语言和输入/物理键盘
  3. 启用“显示虚拟键盘”

如果在 AVD 中选择了启用键盘输入选项,那么您现在将能够使用硬键盘输入和软键盘输入。如果您在 AVD 中取消选中该选项,则无论如何都会显示软键盘。

[E] API 26

与 [D] API 24 和 25 完全相同,只是您需要在设备设置中导航一个额外的“系统”菜单级别,然后才能进入语言和输入/物理键盘

于 2017-09-28T22:44:38.707 回答
2

在 AS 1.1.0 中有两个地方可以取消选择硬件键盘。这还不够:

在此处输入图像描述

必须这样做(单击Tools | Android | AVD Manager;然后创建新的或编辑旧的 AVD,然后单击Show Advanced Settings;向下滚动并清除Enable keyboard input):

在此处输入图像描述

于 2015-05-12T18:04:33.317 回答
1

显示:

EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

并隐藏:

InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);

试试这个吧....

于 2013-08-17T11:26:44.737 回答
1

可能是你的模拟器不支持软键盘..

添加硬件属性 Keyboard support 并为您的模拟器将其设置为 true。

如果它已经是真的,那么检查这个答案。

于 2013-08-17T12:07:11.273 回答