レイアウトにEditText
と があります。Button
編集フィールドに入力して をクリックした後、Button
キーボードの外側をタッチすると仮想キーボードが非表示になるようにしたいです。これを実現する簡単な例を教えていただけますか?
ベストアンサー1
Androidで仮想キーボードを非表示にするには、入力メソッドマネージャー、呼び出しhideSoftInputFromWindow
フォーカスされたビューを含むウィンドウのトークンを渡します。
// 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);
}
これにより、あらゆる状況でキーボードが強制的に非表示になります。場合によっては、InputMethodManager.HIDE_IMPLICIT_ONLY
ユーザーが明示的にキーボードの表示を強制しなかった場合 (メニューを押したままにするなど) のみキーボードを非表示にするために、2 番目のパラメータとして渡す必要があります。
注:これを Kotlin で実行する場合は、以下を使用します。context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
Kotlin 構文
// Only runs if there is a view that is currently focused
this.currentFocus?.let { view ->
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
imm?.hideSoftInputFromWindow(view.windowToken, 0)
}