2013-08-17 3 views
67

Я новичок в Android. Я провел два часа для поиска. Что бы я ни делал, программная клавиатура никогда не показывалась для моего EditText. Я создаю это просто:Android-клавиатура не отображается в эмуляторе

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" 

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

+0

- открытие клавиатуры в любом другом приложении? –

+0

попробуйте заменить imm.showSoftInput (editText, InputMethodManager.SHOW_IMPLICIT); это для imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, 0); – Aravin

+0

@CapDroid нет, к сожалению. я попробовал в другом приложении, но все равно не повезло –

ответ

195

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

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

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

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

enter image description here

+4

Наконец-то! Большое спасибо. Хотелось бы, чтобы я мог дважды ответить на ваш ответ. Что касается Genymotion - я провел один день, пытаясь его настроить, но это не сработало. Я не мог даже написать их поддержку –

+0

Рад помочь :) Что касается Genymotion, они постоянно совершенствуются, но это все еще предварительный просмотр/бета-версия. Однако, поскольку я начал использовать его, у меня не было ни одной проблемы. Может быть, я только начал с него, как только они разобрали большинство проблем - или мне просто повезло :). Тем не менее, эмулятор (ы) Android действительно дает больше вариаций, поэтому я все еще использую их для тестирования совместимости. – free3dom

+0

Отлично, теперь я получил виртуальную клавиатуру! Но у меня есть EditText с android: inputType = "numberDecimal">, а виртуальная клавиатура не записывает числа (пишите их только в том случае, если я пишу перед ними письмо). Проверка орфографии уже отключена ... – Michele

1

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

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); 

Просто попробуйте это один ....

+0

это не помогло, к сожалению –

+0

InputMethodManager imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); ... попробуйте это – FarhaSameer786

+0

, но как мне связать этот код с editText? –

1

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

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

Если это верно уже тогда Check this answer.

71

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

enter image description here

+2

Большое использование скриншотов. Очень полезно. –

+1

Отлично. Это правильный способ для Genymotion. –

2

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

enter image description here

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

enter image description here

+0

Я потратил время на поиск этого решения, потому что индикатор прокрутки обычно исчезает и появляется только после запуска прокрутки. Я бы рекомендовал, чтобы прокручиваемое представление имело визуальное представление о возможности. – GregM

+0

Не работает для меня в Android Studio. Я снимите флажок «Включить ввод с клавиатуры», но эмулятор все еще НЕ показывает программную клавиатуру. – Evgenii

+0

Вы упомянули только один «снимите отметку». Другая - «Имеет аппаратную клавиатуру», как показано - и вы, вероятно, уже ее очистили. Может быть, попробуйте другое виртуальное устройство? Я нашел эмулятора AS довольно трудно переносить. Медленная загрузка, причуды вроде этого .... Удачи. – DSlomer64

1

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

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

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

  1. В Android Manager Virtual Device (AVD), выберите действие редактирования для устройства вы хотите работать с
  2. Нажмите Дополнительные настройки и выполните прокрутку вправо вниз до нижней части страницы в разделе «Keyboard»
  3. снимите флажок "Включить ввод с клавиатуры"

[B] API-22

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

  1. В АДВ, щелкните действие редактирования для устройства вы хотите работать с
  2. Нажмите Дополнительные настройки и выполните прокрутку вправо до дна из страницы, в разделе "Keyboard"
  3. Проверьте параметр "Включить ввод с клавиатуры"

[C] API 23

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

  1. Follow [B] шаги с 1 по 3
  2. На виртуальном устройстве, параметры запуска, затем выберите Язык и ввод/Current Keyboard
  3. Enable Hardware - Показать метод

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

[D] API, 24 и 25

  1. Follow [B] шаги с 1 по 3 выше, проверка или отключив опцию "Включить ввод с клавиатуры" в зависимости от того, хотите ли вы включить hardqare клавиатуры ,
  2. На виртуальном устройстве, параметры запуска, затем выберите Язык и ввод/Физическую клавиатуру
  3. Включить «Показать виртуальную клавиатуру»

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

[E] API 26

Точно так же, как и [D] API, 24 и 25, за исключением вам нужно перейти через дополнительный «System» уровень меню в настройках устройства, прежде чем попасть языка и ввода/Физическая клавиатура