3

我正在硬件设备上开发一个应用程序,该设备有一个不会滑出的内置硬件键盘,因此始终可见(如黑莓)。因此,我从不希望软键盘显示在我的整个应用程序中。我知道另一个 SO question给出了以下代码行:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

但是我不知道在哪里放置此代码以将软键盘隐藏在它可能出现在我的活动中的所有位置。我尝试添加代码Activity.onUserInteraction无济于事。执行后似乎出现了键盘onUserInteraction

我还尝试将以下内容添加到我的<Activity>

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

软键盘仍然出现。

4

5 回答 5

5

你的应用程序不应该做任何事情。设备的固件应包含基于可见的硬件键盘禁止软键盘的配置,就像所有其他具有硬件键盘的 Android 设备一样。如果这没有发生,请与硬件制造商交谈,看看他们是否计划解决这个问题。

于 2010-03-12T00:43:39.560 回答
2

明天演示的简单解决方法:

我会创建一个带有空视图的新 IME。这里有两个开源项目供你看一些代码。

如果您想了解更多有关输入法的信息,请参阅创建输入法

于 2010-03-12T01:54:49.920 回答
2

如果 EditText 的 inputType 为 0,则选择该 EditText 时软键盘将永远不会弹出。

EditText editText = findViewById(R.id.edit_text);
editText.setInputType(0);

这当然需要为应用程序中的所有 EditText 完成,或者您可以始终将 EditText 子类化并在构造函数中将输入类型设置为 0。

设置 xml inputType 参数将不起作用,因为这对应于对 setRawInputType 方法的调用,该方法不会删除 KeyListener。

于 2011-01-18T09:08:26.593 回答
2

我通过在我的有点自定义的 EditText 中覆盖 onCheckIsTextEditor 方法来解决它。

@Override
public boolean onCheckIsTextEditor() {
    return false;
}
于 2011-03-16T07:48:04.317 回答
0

哪里有编辑文本,把这个代码..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}
于 2013-05-10T09:52:12.397 回答