Android软键盘从不出现在模拟器中

我是Android新手。 我已经花了两个小时来search。 无论我尝试softkeyboard从来没有显示我的EditText 。 我简单地创build它:

 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" 

但都是徒劳的。 它从来没有performance出来。 我错过了什么?

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

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

在Genymotion中禁用硬件键盘:
进入Settings – > Language & input并打开Keyboard & Input Methods下的Default项目。 有一个Hardware设置,你可以打开/closures。 当它使用你的物理键盘,当它closures时 ,标准的软键盘应该popup文本域获得焦点。

Genymotion设置的屏幕截图: 默认项目

在这里输入图像说明

在版本2.1.1 – 点击您的虚拟设备设置 – 然后select“使用虚拟键盘input”checkbox。 在这里输入图像说明

在这里输入图像说明

在AS 1.1.0中有两个地方可以取消select硬件键盘。 这一个是不够的:

在这里输入图像说明

必须执行此操作(单击Tools | Android | AVD Manager ;然后创build新的或编辑旧的AVD,然后单击Show Advanced Settings ;向下滚动并清除Enable keyboard input ):

在这里输入图像说明

可能是你的模拟器不支持softkeyboard ..

添加一个硬件属性键盘支持,并将其设置为true为您的模拟器。

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

以显示:

 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); 

试试这个…

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

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

以下步骤将启用屏幕软键盘,但将禁用input文本并使用硬件计算机键盘与AVD进行交互的function。

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

[B] API 22

无论您使用硬件键盘设置如何,都会显示软键盘。 如果您希望在软键盘旁边启用硬件键盘支持,

  1. 在AVD中,点击您想要使用的设备的编辑操作
  2. 单击显示高级设置,然后向右滚动到页面底部的“键盘”部分
  3. 选中“启用键盘input”选项

[C] API 23

如果你想使用硬件和软键盘,那么…

  1. 按照[B]步骤1到3
  2. 在虚拟设备上,启动设置,然后select语言和input/当前键盘
  3. 启用硬件 – 显示input法

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

[D] API 24和25

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

如果在AVD中select启用键盘input选项,则现在可以使用硬键盘和软键盘input。 如果您未选中AVD中的选项,软键盘将不分显示。

[E] API 26

与[D] API 24和25完全相同,除了在进入语言和input/物理键盘之前需要在设备设置中浏览其他“系统”菜单级别