/ Androidソフトキーボードを非表示にし、EditTextの数字のみを許可する - android-edittext、android-softkeyboard、カスタムキーボード、android-inputtype、imeoptions

Androidソフトキーボードを隠し、EditTextの数字のみを許可する - Android-edittext、android-softkeyboard、カスタムキーボード、android-inputtype、imeoptions

私はカスタムキーボードを持っていて、Androidソフトキーボードを表示したくありません。これは次のコードで実現できます(EditTextでAndroidソフトキーボードを非表示にする方法):

editText.setInputType(InputType.TYPE_NULL);

ただし、EditTextは数字のみを許可する必要があります。これは次のようにして実現できます。

editText.setInputType(InputType.TYPE_CLASS_NUMBER);

私は両方を組み合わせる方法を見つけるように見えることはできません機能性。 inputtypeをTYPE_NULLに設定すると、ハードウェアキーボードを使用するときに数値以外の文字を使用でき、inputtypeをTYPE_CLASS_NUMBERに設定すると、ソフトキーボードがポップアップします。

回答:

回答№1は2

airoweからの答えは私を右手に導いた方向。このソリューションはAndroid 2.3.Xデバイスでは機能しませんでした(ソフトキーボードはまだポップアップします)ので、少し修正しました。 私は次のコードを使用して終了しました:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); //hide keyboard

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
}
else
{
editText.setRawInputType(InputType.TYPE_NULL);
}

これはおそらく、ハニカム前錠剤がテキストを入力することを可能にする。しかし、私はこれが無視できると思います。


回答№2の場合は1

の代わりに

editText.setInputType(InputType.TYPE_NULL);

つかいます

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(fieldController.getFieldComponent().getWindowToken(), 0); //hide keyboard

キーボードを隠す。

次に、入力タイプを必要なものに設定することができます。

すなわち、

editText.setInputType(InputType.TYPE_CLASS_NUMBER);