Как сохранить софт-клавиатуру скрытой в настраиваемом алерте? - PullRequest
0 голосов
/ 01 июля 2019

Я пытался найти решение, которое подходит для моего конкретного случая использования, но мне еще предстоит найти правильную настройку.У меня есть кастом AlertDialog с EditText.Я обрабатываю ввод текста без системной клавиатуры, поэтому всплывающее окно, когда я показываю диалоговое окно на экране, является проблемой.

Я уже рассмотрел ряд различных решений, но ни одно из них не сработалодля меня.Этот вопрос переполнения стека , а также этот , этот Средний статья и этот учебник .

public void showAlert() {
    alert.show();
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);

    // using this view to hide the keyboard causes a NPE
    View view = ((AppCompatActivity) context).getCurrentFocus();

    // I have also passed in a 0 for this one.
    imm.hideSoftInputFromWindow(ttsAlert.getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);

    // This is the editText in the view
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

    // This is the rootView of the custom layout
    imm.hideSoftInputFromWindow(rootView.getWindowToken(), 0);

    editText.setShowSoftInputOnFocus(false);
}

Если кто-то может определить, какую мелкую деталь (или большой, очевидный блок кода) я пропустил, чтобы не показывать клавиатуру, я был бы очень признателен.

1 Ответ

0 голосов
/ 01 июля 2019

После долгих поисков я нашел решение, необходимое для моего варианта использования.Клавиатура не появляется, но курсор остается.

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

Метод теперь просто такой:

public void showAlert() {
    alert.show();
    alert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...