Android softkeyboard never shows up in emulator
我是Android的新手。 我已经花了两个小时来搜索。 无论我尝试使用软键盘,我的
1 | EditText editText = (EditText)findViewById(R.id.editText); |
我试过了:
1 2 3 | editText.requestFocus();//i tried without this line too InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); |
和:
1 2 3 4 5 6 7 8 9 10 11 | 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); } }); |
我也尝试过:
1 | getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); |
我尝试将此行放入
1 | android:windowSoftInputMode="stateVisible|adjustResize" |
但一切都是徒劳的。 它永远不会显示。 我错过了什么?
您需要确保您的模拟器未设置为使用硬件键盘。这可以通过在AVD中选定的仿真器上选择
您也可以尝试使用其他模拟器,例如Genymotion。它支持全硬件加速(多核CPU以及GPU),并且运行速度比任何Android模拟器图像快得多。如果您使用Genymotion,则需要在Android中禁用硬件键盘(有关详细信息,请参阅下文)。
要在Genymotion中禁用硬件键盘:
转到
Genymotion设置的屏幕截图:
在2.1.1版中
- 单击您的虚拟设备设置
- 然后选择"使用虚拟键盘输入"复选框。
在AS 1.1.0中有两个地方取消选择硬件键盘。这还不够:
必须这样做(单击
为Android Studio 2+仿??真器启用屏幕软键盘的方法取决于仿真器的API级别。我已经测试了从API 15开始的各种方法,并记录了以下步骤。
[A] API 15,17,19和21。
以下步骤将启用屏幕上的软键盘,但将禁用使用硬件计算机键盘输入文本和与AVD交互的功能。
[B] API 22
无论您使用硬件键盘设置如何操作,都会显示软键盘。如果您希望在软键盘旁边启用硬件键盘支持,
您希望使用的设备
页面到"键盘"部分
[C] API 23
如果你想使用硬件和软键盘,那么......
如果您不需要硬件键盘,请在AVD高级设置中取消选中"启用键盘输入"选项。您无需更改虚拟设备上的任何设置。
[D] API 24和25
键盘输入"选项取决于您是否要启用hardqare键盘。
如果在AVD中选择了启用键盘输入选项,那么您现在可以使用硬键盘输入和软键盘输入。如果取消选中AVD中的选项,则无论如何都会显示软键盘。
[E] API 26
与[D] API 24和25完全相同,除了在进入语言和输入/物理键盘之前需要在设备设置中浏览其他"系统"菜单级别
可能是你的模拟器不支持软键盘..
添加硬件属性键盘支持,并为您的模拟器设置为true。
如果已经是真的那么请检查这个答案。
显示:
1 2 3 4 | 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); |
隐藏:
1 2 | InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0); |
试试这个......