[Android] Предотвратить скрытие клавиатуры, когда фокус EditText выпущен - PullRequest
0 голосов
/ 17 мая 2018

У меня есть фрагмент, который содержит EditText и Button.

Моя цель - добиться следующего поведения.

  1. Когда отображается этот фрагмент, софт-клавиатура не появляется.
  2. Когда EditText фокусируется, появляется программная клавиатура.
  3. Пользователь вводит слова с помощью программной клавиатуры.
  4. Когда кнопка нажата, текст EditText очищается, с сохранением фокуса на EditText и отображением экранной клавиатуры .
  5. Когда пользователь нажимает в любом месте, кроме EditText и Button, программная клавиатура скрывается.

Однако я не могу реализовать 4-й и 5-й шаг.

Когда я нажимаю кнопку, фокус EditText автоматически отключается, а софт-клавиатура также скрывается. (На самом деле это происходит везде, где я нажимаю, кроме EditText)

Я могу реализовать аналогичное поведение, программно показывая клавиатуру в OnClickListener Button, но это не то, чего я действительно хочу, потому что программная клавиатура действительно появляется после однократного скрытия.

Теперь, как я могу реализовать 4-й шаг ??

1 Ответ

0 голосов
/ 17 мая 2018

4: при нажатии кнопки установить текстовое значение в пустую строку

editText.setText("");

это ни на что не повлияет, но устанавливает для editText пустую строку, и этосохраняет отображаемую программную клавиатуру.

5: в вашем приложении действия View.OnClickListener, добавьте метод onClick(), как показано ниже:

@Override
    public void onClick(View view) {
        if(view.getId() == R.id.relativelayout_id){
            // hide soft keyboard on touching the background
            InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
        }
    }

добавьте эту строкучтобы остановить звук щелчка, вам не нужно это, когда вы нажимаете на фон.

relativeLayout.setSoundEffectsEnabled(false);
...