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。
- 在Android虚拟设备pipe理器(AVD)中,单击您要使用的设备的编辑操作
- 单击显示高级设置,然后向右滚动到页面底部的“键盘”部分
- 取消选中“启用键盘input”选项
[B] API 22
无论您使用硬件键盘设置如何,都会显示软键盘。 如果您希望在软键盘旁边启用硬件键盘支持,
- 在AVD中,点击您想要使用的设备的编辑操作
- 单击显示高级设置,然后向右滚动到页面底部的“键盘”部分
- 选中“启用键盘input”选项
[C] API 23
如果你想使用硬件和软键盘,那么…
- 按照[B]步骤1到3
- 在虚拟设备上,启动设置,然后select语言和input/当前键盘
- 启用硬件 – 显示input法
如果您不需要硬件键盘,则在AVD高级设置中,取消选中“启用键盘input”选项。 您将不需要更改虚拟设备上的任何设置。
[D] API 24和25
- 按照上面的[B]步骤1到3,根据是否要启用hardqare键盘,选中或取消选中“启用键盘input”选项。
- 在虚拟设备上,启动设置,然后select语言和input/物理键盘
- 启用“显示虚拟键盘”
如果在AVD中select启用键盘input选项,则现在可以使用硬键盘和软键盘input。 如果您未选中AVD中的选项,软键盘将不分显示。
[E] API 26
与[D] API 24和25完全相同,除了在进入语言和input/物理键盘之前需要在设备设置中浏览其他“系统”菜单级别