android 软件盘不会消失,关于键盘:Android软键盘永远不会出现在模拟器中

我是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"

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

在任何其他应用程序中键盘打开?

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

不幸的是@CapDroid没有。 我尝试了另一个应用程序,但仍然没有运气

@Aravinth仍然无法正常工作

您使用的是模拟器还是设备。

@AndreyChernukha使用AVD管理器添加硬件属性键盘支持并将其设置为true。

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

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

要在Genymotion中禁用硬件键盘:

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

Genymotion设置的屏幕截图:

20b8c9a3ad2bb8952fe37858b1bebbe2.png

c6f423cac9298c6c543a2991da97fb2e.png

最后!非常感谢你。我希望我能两次回答你的答案。至于Genymotion - 我花了一天时间试图设置它,但它没有用。我甚至无法写信给他们的支持

很高兴帮助:)至于Genymotion,他们不断改进,但它仍然是预览/测试版。但是,自从我开始使用它以来,我没有遇到任何问题。可能是因为我刚刚开始解决了大部分问题 - 或者我很幸运:)。也就是说,android模拟器确实提供了更多的变化,所以我仍然使用它们来测试兼容性。

那很好,现在我有了虚拟键盘!但是我有一个带有android:EditType ="numberDecimal">的EditText,而virtualkeyboard不会写数字(只有在我写一封信之前才写入它们)。拼写检查已经关闭......

看看这里可能的解决方案。

@ free3dom~"打开键盘和输入法下的默认项目"是什么?我没看到那个项目。

@Igor - 只有在使用Genymotion模拟器时,它仍然存在于最新版本(v2.2.2)中。如果您正在使用它,请按照说明进行操作。为清楚起见,我将在答案中添加屏幕截图。另请参阅Sharif的答案以获取替代方法。

我想这取决于Android目标API。它没有出现在4.1.1中。

当我将硬件物理键盘切换为关闭时......当你关闭它时,它会持续存在......它只会在当前会话中保持关闭状态......我每次打开模拟器时都必须重置它...无论如何要坚持不懈将此设置关闭或打开?

非常感谢.....

在2.1.1版中

- 单击您的虚拟设备设置

- 然后选择"使用虚拟键盘输入"复选框。

01167974d6048ecd1771c7aa19098aec.png

f2802f4ab99f5e5a9ba1f0449c7b1238.png

很好地使用截图。很有帮助。

完善。这是Genymotion的正确方法。

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

242e91ce9357dc3c6708ac4eb9b82c8c.png

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

4af59ecce8ccff56f3be5cd7258d5766.png

我花时间找到这个解决方案,因为滚动指示器通常消失了,只有在你开始滚动时才显示。我建议如果一个视图是可滚动的,可以在视觉上看到这种可能性。

在Android Studio中对我不起作用。我取消选中"启用键盘输入"但模拟器仍然不显示软件键盘。

你只提到了一个"取消选中"。另一个是"有硬件键盘",如图所示 - 你可能已经清除了它。也许尝试不同的虚拟设备?我发现AS模拟器很难忍受。加载缓慢,像这样的怪癖....祝你好运。

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

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

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

在Android虚拟设备管理器(AVD)中,单击要使用的设备的编辑操作

单击"显示高级设置",然后向下滚动到页面底部的"键盘"部分

取消选中"启用键盘输入"选项

[B] API 22

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

在AVD中,单击的编辑操作

您希望使用的设备

单击"显示高级设置",然后向下滚动到底部

页面到"键盘"部分

选中"启用键盘输入"选项

[C] API 23

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

按照[B]步骤1至3进行操作

在虚拟设备上,启动设置,然后选择语言和输入/当前键盘

启用硬件 - 显示输入法

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

[D] API 24和25

按照[B]上面的步骤1到3,选中或取消选中"启用"

键盘输入"选项取决于您是否要启用hardqare键盘。

在虚拟设备上,启动设置,然后选择语言和输入/物理键盘

启用"显示虚拟键盘"

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

[E] API 26

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

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

添加硬件属性键盘支持,并为您的模拟器设置为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);

试试这个......

不幸的是,它没有帮助

InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY); ...试试这个

但是如何将此代码绑定到editText?

@Andrey Chernukha刚刚尝试了我发布的代码

但为什么它对我不起作用????

@Andrey Chernukha-告诉我你的logcat错误......

@Andrey Chernukha - 我认为你的模拟器不支持软键盘或模拟器的硬件不能正常工作.....

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值