Android软键盘永远不会在模拟器中显示


86

我是Android新手。我已经花了两个小时进行搜索。无论我尝试使用什么软键盘,都不会为我显示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"

但都是徒劳的。它只是从不显示。我想念什么?


在其他任何应用程序中都可以打开键盘吗?
Niranj Patel

试试这个替换imm.showSoftInput(editText,InputMethodManager.SHOW_IMPLICIT); 这到imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
Aravin

@CapDroid不,很不幸。我尝试了其他应用程序,但还是没有运气
Andrey Chernukha

@Aravinth仍然无法正常工作
Andrey Chernukha

您在使用仿真器还是设备。
Aravin

Answers:


211

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

您也可以尝试使用其他仿真器,例如Genymotion。它支持完整的硬件加速(多核CPU和GPU),并且运行速度比任何Android模拟器映像都要快。如果您使用Genymotion,则需要在Android中禁用硬件键盘(有关详细信息,请参见下文)。

要在Genymotion中禁用硬件键盘,请执行以下操作:
转到Settings->Language & input并打开下的Default项目Keyboard & Input MethodsHardware您可以打开/关闭一个设置。启用此功能后您可以使用物理键盘,而禁用该功能时,只要文本字段获得焦点,标准软键盘都应弹出。

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

在此处输入图片说明


4
最后!非常感谢你。希望我能两次赞成你的回答。至于Genymotion-我花了一天的时间尝试进行设置,但没有成功。我什至无法写信给他们
Andrey Chernukha

很高兴为您提供帮助:)至于Genymotion,他们一直在不断改进,但仍处于预览/测试阶段。但是,自从我开始使用它以来,我还没有遇到任何问题。可能是他们解决了大多数问题后才开始使用它-否则我很幸运:)。就是说,虽然android模拟器确实提供了更多的变化,所以我仍然使用它们来测试兼容性。
Free3dom 2013年

太好了,现在我有了虚拟键盘!但是我有一个带有android:inputType =“ numberDecimal”>的EditText,并且virtualkeyboard不写数字(仅当我在数字之前写字母时,它才写数字)。拼写检查器已经关闭了
Michele 2013年

在这里看看可能的解决方案。
Free3dom 2013年

@ free3dom〜“打开“键盘和输入法”下的默认项”是什么?我没看到那个项目。
IgorGanapolsky 2014年

73

在2.1.1版中-单击虚拟设备设置-然后选择“使用虚拟键盘输入”复选框。 在此处输入图片说明

在此处输入图片说明


2

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

在此处输入图片说明

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

在此处输入图片说明


我花了一些时间找到这种解决方案,因为滚动指示器通常不见了,只有在开始滚动时才显示。我建议,如果视图是可滚动的,则从视觉上可以看出这种可能性。
GregM 2015年

在Android Studio中不适用于我。我取消选中“启用键盘输入”,但是仿真器仍然不显示软件键盘。
Evgenii

您只提到一个“取消选中”。如图所示,另一个是“具有硬件键盘”-您可能已经清除了它。也许尝试其他虚拟设备?我发现AS模拟器很难容忍。加载缓慢,像这样的怪癖。
DSlomer64

2

为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,根据您是否要启用hardqare键盘,选中或取消选中“启用键盘输入”选项。
  2. 在虚拟设备上,启动设置,然后选择语言和输入法/物理键盘
  3. 启用“显示虚拟键盘”

如果在AVD中选择了“启用键盘输入”选项,则现在可以同时使用硬键盘输入和软键盘输入。如果您未选中AVD中的选项,则无论如何都会显示软键盘。

[E] API 26

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



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

只要尝试这个...。


不幸的是,它没有帮助
Andrey Chernukha

InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY); ...尝试一下
FarhaSameer786 2013年

@Andrey Chernukha-i认为您的仿真器不支持软键盘或仿真器的硬件无法正常工作..
FarhaSameer786 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.