1. ホーム
  2. android

[解決済み] アクティビティ開始時にソフトキーボードを非表示にする方法

2022-04-26 02:15:45

質問

を持つEdittextがあります。 android:windowSoftInputMode="stateVisible" をマニフェストに追加しました。現在、アクティビティを開始するとキーボードが表示されます。どうすれば隠せますか?私は android:windowSoftInputMode="stateHidden キーボードが表示されているときに、アプリを最小化し、再開すると、キーボードが表示されるはずだからです。 そこで

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

が、うまくいかなかった。

解決方法は?

xmlを使いたくない場合は、キーボードを隠すためのKotlin Extensionを作る

// In onResume, call this
myView.hideKeyboard()

fun View.hideKeyboard() {
    val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}

ユースケースに基づく代替案。

fun Fragment.hideKeyboard() {
    view?.let { activity?.hideKeyboard(it) }
}

fun Activity.hideKeyboard() {
    // Calls Context.hideKeyboard
    hideKeyboard(currentFocus ?: View(this))
}

fun Context.hideKeyboard(view: View) {
    view.hideKeyboard()
}

ご利用方法 表示 ソフトキーボード

fun Context.showKeyboard() { // Or View.showKeyboard()
    val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.toggleSoftInput(SHOW_FORCED, HIDE_IMPLICIT_ONLY)
}

編集テキストへのフォーカスを同時に要求する場合の簡便法

myEdittext.focus()

fun View.focus() {
    requestFocus()
    showKeyboard()
}

ボーナスの簡略化

を使用する必要性を排除します。 getSystemService : スプリットライブラリ

// Simplifies above solution to just
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)