Androidソフトキーボードの視認性を確保する方法

私のレイアウトには、EditTextButtonがあります。

エディットフィールドに書き込んで、ボタンをクリックした後、バーチャルキーボードを隠したいのです。これは簡単なコードだと思いますが、どこでその例を見つけることができますか?

InputMethodManager]1を使用して、[hideSoftInputFromWindow][2]を呼び出し、フォーカスしているビューを含むウィンドウのトークンを渡すことで、Androidに仮想キーボードを非表示にさせることができます。

// Check if no view has focus:
View view = this.getCurrentFocus();
if (view != null) {  
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

これにより、どのような状況でもキーボードが強制的に非表示になります。場合によっては、2番目のパラメータに InputMethodManager.HIDE_IMPLICIT_ONLY を渡して、ユーザが明示的にキーボードの表示を強制していないとき(メニューを押していないとき)にのみキーボードを非表示にするようにするとよいでしょう。

Note: これをKotlinで行いたい場合は、次のようにします。 context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager を使用してください。

Kotlinの構文(英語)

// Check if no view has focus:
 val view = this.currentFocus
 view?.let { v ->
  val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager 
  imm?.hideSoftInputFromWindow(v.windowToken, 0)
 }

[2]: http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#hideSoftInputFromWindow%28android.os.IBinder,%20int%29

解説 (34)

また、ソフトキーボードを隠すのに便利なのが

getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN
);

これは、ユーザーが実際にeditText Viewに触れるまで、ソフトキーボードを表示しないようにするために使用できます。

解説 (13)

以下のコードを onCreate() で試してみてください。

EditText edtView=(EditText)findViewById(R.id.editTextConvertValue);
edtView.setInputType(0);
解説 (6)