我正在开发一个应用程序上的硬件设备,有一个内置的硬件键盘那不滑出来,所以总是可见(喜欢黑莓).因此,我再也不想的软盘来显示我的整个应用程序。我知道的 另一个这样的问题 这给了以下行代码:

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

但我不知道在哪里投入这个代码隐藏软键盘在所有地方,它可能会出现在我的活动。我已经试图加入的代码 Activity.onUserInteraction 无济于事。这似乎显示键盘 onUserInteraction 执行。

我也想加入下面的我 <Activity>:

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

软盘仍然出现。

有帮助吗?

解决方案

您的应用程序不应该做任何事情。该设备的固件应该包含抑制基于硬件键盘是可见的软键盘,就像有一个硬件键盘的每个其他Android设备的配置。如果情况并非如此,聊到硬件厂商,看看他们正在解决这一计划。

其他提示

一个简单的解决办法对于明天的演讲:

我会创造一个新的IME与空图。这里有两个开源项目给你看看一些代码。

如果你想知道更多关于输入的方法,去 创造一种输入方法.

如果一个EditText具有0的的inputType,选择了的EditText当软键盘将永远不会弹出。

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

当然,这将需要在应用程序中的所有EditTexts做,或者你总是可以继承的EditText并设定输入类型为0,在构造函数。

设置XML的inputType参数不会做,因为这对应于向setRawInputType方法,该方法不删除的KeyListener的呼叫。

我通过在我的一个位定制的EditText重写onCheckIsTextEditor方法来解决它。

@Override
public boolean onCheckIsTextEditor() {
    return false;
}

你在哪里都必须编辑的文字,把这个代码..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top