Клавиатура не отображается, когда я нажимаю на edittextview в Android? - PullRequest
10 голосов
/ 08 августа 2011

Когда я нажимаю на edittextview, иногда клавиатура отображается или клавиатура не отображается.

В Android 2.1 он показывает клавиатуру, когда я нажимаю на edittextview

но когда я запускаю то же самое приложение на Android 2.2, оно не показывает клавиатуру.

Помогите мне, как показать эту проблему.

Ответы [ 8 ]

24 голосов
/ 12 октября 2011

ОК, это может быть поздний ответ, но он сработал.

Я столкнулся с этой проблемой на Android 2.1 и 2.3.x (не тестировался на других версиях SDK).

Я заметил странную вещь: когда мой щелчок по EditText не смог открыть клавиатуру, я нажал кнопку BACK, чтобы открыть диалоговое окно с предупреждением, а затем отменил (закрыл) его и снова щелкнул EditText, теперь клавиатура была переведена вжизнь снова.

Из этого я могу сделать вывод, что клавиатура всегда будет отображать для EditText, если EditText не ранее собственный фокус (отображение диалогового окна предупреждения через представление EditText сделает EditTextчтобы потерять фокус).

, поэтому вызовите указанную ниже функцию для вашего EditText, когда она выведена на передний план:

mEditText.clearFocus();

или

parentViewThatContainsEditTextView.clearFocus();
7 голосов
/ 15 августа 2013

У меня была похожая проблема на Galaxy S3 (отображение элементов управления EditText в PopupWindow - клавиатура никогда не показывалась). Это решило мою проблему:

final PopupWindow popUp = new PopupWindow(vbl.getMainLayout());
[....]
popUp.setFocusable(true);
popUp.update();
4 голосов
/ 17 июня 2013

вот возможное решение:

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(final View v, final boolean hasFocus) {
        if (hasFocus && editText.isEnabled() && editText.isFocusable()) {
            editText.post(new Runnable() {
                @Override
                public void run() {
                    final InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.showSoftInput(editText,InputMethodManager.SHOW_IMPLICIT);
                }
            });
        }
    }
});

код основан на следующей ссылке:

http://turbomanage.wordpress.com/2012/05/02/show-soft-keyboard-automatically-when-edittext-receives-focus/

3 голосов
/ 17 октября 2014

Я не хотел, чтобы EditText потерял фокус при использовании editText.clearFocus(). Пришел к этому решению.

@Override
public void onResume() {
    super.onResume();

    if (Build.VERSION.SDK_INT < 11) {
        editText.clearFocus();
        editText.requestFocus();
    }
}
2 голосов
/ 06 июня 2013

В моем случае это было в PopupWindow, и мне просто нужно было позвонить popupWindow.setFocusable(true)

1 голос
/ 17 февраля 2016

Это работает как шарм, в случае, если вы даже хотите скрыть по нажатию editTextView.

textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            displayKeyboard();
        }
    });

private void displayKeyboard(){
    if (textView != null) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInputFromWindow(textView.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0);
    }
}
0 голосов
/ 12 мая 2019

У меня была такая же проблема при отображении EditText в DialogFragment . Несмотря на то, что EditText получил фокус (т. Е. При щелчке на нем отображалась мигающая каретка), клавиатура не отображалась.

Моим решением было добавить фиктивный EditText в самый верхний вид моего DialogFragment.

<EditText
    android:id="@+id/editTextFix"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/fix"
    android:importantForAutofill="no"
    tools:targetApi="o"
    android:inputType="text"
    android:visibility="gone"/>
0 голосов
/ 08 августа 2011

Возможные сценарии:

1) При нажатии на EditText обычно появляется клавиатура.Но если вы нажмете кнопку возврата в эмуляторе, клавиатура (не экранная клавиатура) тускнеет.

2) В коде вы можете отключить клавиатуру при нажатии на EditText, установив флаг.

InputMethodManager inputmethodmgr= (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
inputmethodmgr.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...