Android: покажите программируемую клавиатуру автоматически, когда фокус будет на EditText

[Д0] mysqli_connect (DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

используйте DB_HOST вместо DB_SERVER

325
задан Mat Nadrofsky 8 March 2010 в 18:22
поделиться

3 ответа

Вы можете создать прослушиватель фокуса для EditText в AlertDialog , а затем получить AlertDialog Окно . Оттуда вы можете отобразить программную клавиатуру, вызвав setSoftInputMode .

final AlertDialog dialog = ...;

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }
});
295
ответ дан 23 November 2019 в 00:49
поделиться

Я знаю, что этот вопрос устарел, потому что я думаю, что использование функции расширения - более красивый способ показать клавиатуру для текста редактирования.

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

код котлина: просто нужно позвонить edittext.showKeyboard()

fun EditText.showKeyboard() {
  post {
    requestFocus()
    val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
  }
}

код Java:

public static void showKeyboard(EditText editText) {
    editText.post(new Runnable() {
      @Override
      public void run() {
        editText.requestFocus();
        InputMethodManager imm = (InputMethodManager) editText.getContext()
            .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
      }
    });
  }
0
ответ дан 23 November 2019 в 00:49
поделиться

Взгляните на это обсуждение , в котором выполняется ручное скрытие и отображение IME. Однако я считаю, что если сфокусированный EditText не вызывает IME, это потому, что вы вызываете AlertDialog.show () в своем OnCreate () или какой-либо другой метод, который вызывается перед фактическим представлением экрана. Я считаю, что перемещение его в OnPostResume () должно исправить это в этом случае.

7
ответ дан 23 November 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: