Клавіатура Android ніколи не відображається в емуляторі


86

Я новачок в Android. Я вже дві години витратив на пошуки. Що б я не спробував програмну клавіатуру, це ніколи не відображається для мене 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"

але все даремно. Це просто ніколи не видно. Чого мені не вистачає?


відкривається клавіатура в будь-якій іншій програмі?
Niranj Patel

спробуйте замінити immu.showSoftInput (editText, InputMethodManager.SHOW_IMPLICIT); це до immu.toggleSoftInput (InputMethodManager.SHOW_FORCED, 0);
Aravin

@CapDroid ні, на жаль. я спробував в іншій програмі, але все ще не везло
Андрій Чернуха

@Aravinth досі не працює
Андрій Чернуха

Чи використовуєте ви емулятор або пристрій.
Aravin

Відповіді:


211

Потрібно переконатися, що ваш емулятор не налаштований на використання апаратної клавіатури . Це можна зробити, вибравши Editвибраний емулятор в AVD. Потім зніміть з Hardware keyboard presentналаштуванням.

Ви також можете спробувати використовувати інший емулятор, такий як Genymotion . Він підтримує повне апаратне прискорення (багатоядерний процесор, а також графічний процесор) і працює набагато швидше, ніж будь-який із зображень андроїд-емулятора. Якщо ви використовуєте Genymotion, вам потрібно буде вимкнути апаратну клавіатуру в Android (докладніше див. Нижче).

Щоб вимкнути апаратну клавіатуру в Genymotion:
Перейдіть до Settings-> Language & inputі відкрийте Defaultелемент під Keyboard & Input Methods. Існує Hardwareпараметр, який ви можете вмикати / вимикати. Коли вона увімкнена, ви використовуєте фізичну клавіатуру, а коли вона вимкнена, стандартна м’яка клавіатура повинна з’являтися, коли текстове поле фокусується.

Знімки екрана для налаштувань Genymotion: Елемент за замовчуванням

введіть тут опис зображення


4
Нарешті! Дуже дякую. Я хотів би, щоб я двічі проголосував за вашу відповідь. Що стосується Genymotion - я витратив день, намагаючись налаштувати його, але це не спрацювало. Я навіть не зміг написати їм підтримку
Андрій Чернуха

Радий допомогти :) Що стосується Genymotion, вони постійно вдосконалюються, але це все ще попередній перегляд / бета-версія. Однак, відколи я почав користуватися ним, у мене не було жодної проблеми. Можливо, я щойно почав із цього, як тільки вони розібрались з більшістю проблем - або мені просто пощастило :). Тим не менш, емулятори android дійсно дають більше варіацій, тому я все ще використовую їх для тестування сумісності.
free3dom

Це чудово, тепер у мене є віртуальна клавіатура! Але у мене є EditText з android: inputType = "numberDecimal">, і virtualkeyboard не пише цифри (вона пише їх, лише якщо я пишу лист перед ними). Перевірка правопису вже вимкнена ...
Мікеле

Подивіться тут на можливі рішення.
free3dom

@ free3dom ~ "відкрити елемент за замовчуванням у розділі Клавіатура та методи введення" Що це? Я не бачу цього предмета.
Ігор Ганапольський

73

У версії 2.1.1 - клацніть на налаштуваннях віртуального пристрою, а потім встановіть прапорець "використовувати віртуальну клавіатуру для набору тексту". введіть тут опис зображення

введіть тут опис зображення


2

У AS 1.1.0 можна скасувати вибір апаратної клавіатури у двох місцях. Цього недостатньо:

введіть тут опис зображення

Потрібно зробити це (натисніть Tools | Android | AVD Manager; потім створіть новий або відредагуйте старий AVD, а потім натисніть Show Advanced Settings; прокрутіть вниз і очистіть Enable keyboard input):

введіть тут опис зображення


Я витратив час на пошук цього рішення, оскільки індикатор прокрутки зазвичай зникає, і з’являється лише після того, як ви починаєте прокручування. Я б порекомендував, якщо вигляд можна прокручувати, мати візуальну інформацію про таку можливість.
GregM

Мені не вдається в Android Studio. Я знімаю прапорець біля пункту «Увімкнути введення з клавіатури», але емулятор все одно НЕ відображає програмну клавіатуру.
Євгеній

Ви згадали лише одну "зняти галочку". Інший - "Має апаратну клавіатуру", як показано, - і ви, напевно, це вже теж очистили. Може спробувати інший віртуальний пристрій? Я виявив, що емулятор AS досить важко переносити. Повільно завантажується, дивацтва, як це .... Удачі.
DSlomer64

2

Спосіб увімкнення екранної програмної клавіатури для емуляторів Android Studio 2+ залежить від рівня API емулятора. Я протестував різні методи, починаючи з API 15, і записав наступні кроки.

[A] API 15, 17, 19 та 21.

Наступні кроки активують екранну програмну клавіатуру, але вимкнуть можливість введення тексту та взаємодії з AVD за допомогою апаратної клавіатури комп’ютера.

  1. В диспетчері віртуальних пристроїв Android (AVD) натисніть дію редагування для пристрою, з яким ви хочете працювати
  2. Натисніть Показати розширені налаштування та прокрутіть униз сторінки до розділу "Клавіатура"
  3. Зніміть прапорець біля пункту «Увімкнути введення з клавіатури»

[B] API 22

М'яка клавіатура відображається незалежно від того, що ви робите з налаштуваннями апаратної клавіатури. Якщо ви хочете включити підтримку апаратної клавіатури поряд із м'якою клавіатурою,

  1. У AVD натисніть дію редагування для пристрою, з яким ви хочете працювати
  2. Натисніть Показати розширені налаштування та прокрутіть униз сторінки до розділу "Клавіатура"
  3. Поставте прапорець біля пункту «Увімкнути введення з клавіатури»

[C] API 23

Якщо ви хочете використовувати апаратне забезпечення та програмну клавіатуру, тоді ...

  1. Виконайте кроки [B] з 1 по 3
  2. На віртуальному пристрої запустіть Налаштування, а потім виберіть Мова та введення / Поточна клавіатура
  3. Увімкнути обладнання - Показати метод введення

Якщо вам не потрібна апаратна клавіатура, у додаткових налаштуваннях AVD зніміть прапорець біля пункту «Увімкнути введення з клавіатури». Вам не потрібно буде змінювати будь-які налаштування на віртуальному пристрої.

[D] API 24 і 25

  1. Виконайте кроки 1–3 вище [B], встановивши або знявши прапорець біля опції «Увімкнути введення з клавіатури» залежно від того, чи хочете ви ввімкнути клавіатуру жорсткого диска.
  2. На віртуальному пристрої запустіть Налаштування, потім виберіть Мова та введення / Фізична клавіатура
  3. Увімкнути "Показати віртуальну клавіатуру"

Якщо в AVD було вибрано параметр Увімкнути введення з клавіатури, то тепер ви зможете використовувати як жорсткий, так і м’який введення з клавіатури. Якщо ви зняли прапорець у AVD, незалежно відображатиметься програмна клавіатура.

[E] API 26

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



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

Просто спробуйте цей ....


це не допомогло, на жаль
Андрій Чернуха

InputMethodManager brez = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); immu.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); ... спробуйте це
FarhaSameer786

@Andrey Chernukha-я думаю, що ваш емулятор не підтримує програмну клавіатуру або апаратне забезпечення емулятора не працює належним чином .....
FarhaSameer786
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.