我有一个应用程序,我需要创建自定义键盘,因为条形码扫描仪被分类为硬件键盘和硬件键盘禁用软键盘。问题是当没有连接扫描仪时,内置的软键盘将在不需要时显示。我有一个显示自定义键盘的按钮,它也会使用
隐藏默认键盘((InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(advText.getWindowToken(), 0);
(advText是EditText的扩展版本)
我尝试将这行代码放在EditText的onFocusChanged
方法中,但没有任何反应。如果我使用setInputType(InputType.TYPE_NULL);
,Android键盘永远不会显示,但EditText不会显示光标或从自定义键盘输入的任何内容(但我知道自从我的"完成"键将EditText中的文本发送到其他地方就好了。
我可以完全禁用这个应用程序的Android键盘,只要EditTexts显示游标和自定义键盘只在使用按钮时显示。
我看过这些答案,但没有找到解决方案。
Close/hide the Android Soft Keyboard
How to show soft-keyboard when edittext is focused
How to hide Android soft keyboard on EditText
编辑:
我目前的解决方案是在EditText的onCheckIsTextEditor中运行hide方法,因为它似乎在onFocusChanged之后运行,似乎每秒都会调用它。但这是一个讨厌的黑客,因为键盘仍然显示一瞬间并来回移动我的布局。我目前的测试设备包括带有4.1.2的Motorola Photon Q 4G LTE和带有4.0.3的Honeywell Dolphin 70e Black
答案 0 :(得分:0)
修改<activity>
中的AndroidManifest.xml
标记并添加此属性:android:windowSoftInputMode="stateAlwaysHidden"
请参阅http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft
刚刚添加并删除了你正在做的所有其他奇怪的事情来隐藏软键盘。
P.S。您还可以在运行时启用和禁用此功能。 getWindow().getAttributes().softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN;
答案 1 :(得分:0)
EditText提供此功能,EditText中的标记textIsSelectable
设置为 true 。这样, 光标仍然存在,您将能够选择/复制/剪切/粘贴,但SoftKeyboard将永远不会显示 。需要API 11及更高版本。
您可以在xml布局中设置它,如下所示:
<EditText
...
android:textIsSelectable="true"/>
或者以编程方式,像这样:
EditText editText = (EditText) findViewById(R.id.editText);
editText.setTextIsSelectable(true);
对于使用API 10及更低版本的任何人,此处提供了hack: https://stackoverflow.com/a/20173020/7550472