Android: EditText внутри Scrollview: блокировка автошоу программных клавиш

Когда у Activity есть EditText внутри просмотра прокрутки, программная клавиша отображается автоматически.

Но EditText не является основной функцией Activity.

Как предотвратить автоматическое отображение SoftKeyboard при создании Activity?

Некоторые вещи не решают проблему:

  • Добавление кода, чтобы скрыть программную клавиатуру, вызывает проблемы с ее повторным отображением:

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

  • или в манифесте: android:windowSoftInputMode="stateAlwaysHidden"

4 ответа

Решение

Правильный способ заблокировать автоматическое отображение программной клавиатуры - не дать ей сфокусироваться на EditText.

Для каждого текста редактирования в вашем макете:

onCreate()
    editText = (EditText)findViewById(R.id.edittext);
    editText.setFocusable(false);

В вашем файле макета XML:

<EditText
    ...
    android:onClick="enableFocusable"

Затем в классе Java, метод...

public void enableFocusable(View view) {
    editText.setFocusableInTouchMode(true);
    editText.requestFocus();
    if (view.requestFocus()) {
        InputMethodManager imm = (InputMethodManager)
                getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
    }
}

Ты можешь использоватьedittext.clearFocus();или добавить android:windowSoftInputMode="stateHidden"

Вы можете использовать этот код в вашем методе onCreate...

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

Вы просто должны удалить EditText фокус.

1-надстройки android:windowSoftInputMode="stateHidden" на тег активности в манифесте

или же

2-использование this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

или же

3-использование edittext.clearFocus();

или же

4 набора

    android:focusable="true"
    android:focusableInTouchMode="true" 

для другого взгляда.

Замечания: edittext.clearFocus();может не сработать, потому что он устанавливает фокус обратно на другое фокусируемое представление в упражнении, поэтому в одном представлении он просто сбрасывает способность фокусировки к тому же представлению.

Другие вопросы по тегам