Android-клавиатура не отображается в эмуляторе

Я новичок в Android. Я провел два часа для поиска. Независимо от того, что я попробовал, softkeyboard никогда не отображается для моего EditText. Я просто создаю его:

EditText editText = (EditText)findViewById(R.id.editText);

Я пробовал:

 editText.requestFocus();//i tried without this line too
 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

и

editText.setOnFocusChangeListener(new OnFocusChangeListener() {

         @Override
         public void onFocusChange(View v, boolean hasFocus) 
         {    

                     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                     imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

         }
     });

Я также пробовал:

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

Я попытался поместить эту строку в файл AndroidManifest.xml:

 android:windowSoftInputMode="stateVisible|adjustResize"

но все напрасно. Он просто не показывает. Что мне не хватает?

Ответ 1

Вам нужно убедиться, что ваш эмулятор не настроен на использование аппаратной клавиатуры . Это можно сделать, выбрав Edit на выбранном эмуляторе в AVD. Затем снимите флажок Hardware keyboard present.

Вы также можете попробовать использовать другой эмулятор, например Genymotion. Он поддерживает полное аппаратное ускорение (многоядерный процессор, а также графический процессор) и работает намного быстрее, чем любые изображения эмуляторов Android. Если вы используете Genymotion, вам необходимо отключить аппаратную клавиатуру в Android (подробнее см. Ниже).

Чтобы отключить аппаратную клавиатуру в Genymotion:
Перейдите к SettingsLanguage & input и откройте элемент Default в разделе Keyboard & Input Methods. Существует параметр Hardware, который можно включить/выключить. Когда он на, вы используете свою физическую клавиатуру, а когда она выключена, стандартная мягкая клавиатура должна появляться всякий раз, когда текстовое поле получает фокус.

Скриншоты для настроек Genymotion: Default Item

enter image description here

Ответ 2

В версии 2.1.1 - нажмите на настройки своего виртуального устройства - затем установите флажок "Использовать виртуальную клавиатуру для ввода". enter image description here

enter image description here

Ответ 3

Есть два места для отмены выбора аппаратной клавиатуры в AS 1.1.0. Этого недостаточно:

enter image description here

Необходимо сделать это (нажмите Tools | Android | AVD Manager, затем создайте новый или отредактируйте старый AVD, а затем нажмите Show Advanced Settings; прокрутите вниз и снимите Enable keyboard input):

enter image description here

Ответ 4

Чтобы показать:

EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

И скрыть:

InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);

Просто попробуй это...

Ответ 5

Может быть, ваш эмулятор не поддерживает softkeyboard.

Добавить свойство аппаратного обеспечения Поддержка клавиатуры и присвоить значение true для вашего эмулятора.

Если это уже верно, тогда Отметьте этот ответ.

Ответ 6

Метод включения экранной мягкой клавиатуры для эмуляторов Android Studio 2+ зависит от уровня API эмулятора. Я протестировал различные методы, начиная с API 15, и записал следующие шаги.

[A] API 15, 17, 19 и 21.

Следующие шаги позволят использовать экранную мягкую клавиатуру, но отключат возможность ввода текста и взаимодействия с AVD с помощью компьютерной клавиатуры компьютера.

  • В Android Virtual Device Manager (AVD) нажмите действие редактирования для устройства, с которым вы хотите работать
  • Нажмите "Показать дополнительные настройки" и прокрутите страницу вниз до нижней части страницы в разделе "Клавиатура".
  • Снимите флажок "Включить ввод с клавиатуры"

[B] API 22

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

  • В AVD нажмите действие редактирования для устройство, с которым вы хотите работать с
  • Нажмите "Показать дополнительные настройки" и прокрутите страницу вниз до нижней части страницу в раздел "Клавиатура".
  • Установите флажок "Включить ввод с клавиатуры"

[C] API 23

Если вы хотите использовать аппаратную и мягкую клавиатуру, тогда...

  • Следуйте шагам от 1 до 3 [B]
  • На виртуальном устройстве запустите настройки, затем выберите Язык и ввод/Текущая клавиатура.
  • Включить оборудование - Показать метод ввода

Если вам не нужна аппаратная клавиатура, в дополнительных настройках AVD снимите флажок "Включить ввод с клавиатуры". Вам не нужно будет изменять какие-либо настройки на виртуальном устройстве.

[D] API 24 и 25

  • Следуйте шагам с 1 по 3 выше, отметьте или снимите флажок "Включить клавиатура "в зависимости от того, хотите ли вы включить клавиатуру hardqare.
  • На виртуальном устройстве запустите настройки, затем выберите Язык и ввод/Физическая клавиатура.
  • Включить "Показать виртуальную клавиатуру"

Если в AVD была выбрана опция "Включить ввод с клавиатуры", теперь вы сможете использовать как жесткие, так и мягкие входы клавиатуры. Если вы отключили опцию в AVD, мягкая клавиатура будет отображаться независимо.

[E] API 26

Точно так же, как [D] API 24 и 25, за исключением того, что вам нужно перейти через дополнительный уровень меню "Система" в настройках устройства, прежде чем вы перейдете на язык и ввод/физическая клавиатура.