Android,只显示自定义键盘

时间:2014-06-09 21:25:31

标签: android keyboard android-edittext

我有一个应用程序,我需要创建自定义键盘,因为条形码扫描仪被分类为硬件键盘和硬件键盘禁用软键盘。问题是当没有连接扫描仪时,内置的软键盘将在不需要时显示。我有一个显示自定义键盘的按钮,它也会使用

隐藏默认键盘
((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

2 个答案:

答案 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