Я новичок в 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"
но все напрасно. Этого просто не видно. Что мне не хватает?
Ответы:
Вам необходимо убедиться, что ваш эмулятор не настроен на использование аппаратной клавиатуры . Это можно сделать, выбрав
Edit
эмулятор в AVD. Затем снимите флажок сHardware keyboard present
параметра.Вы также можете попробовать использовать другой эмулятор, например Genymotion . Он поддерживает полное аппаратное ускорение (многоядерный процессор и графический процессор) и работает намного быстрее, чем любой из образов эмулятора Android. Если вы используете Genymotion, вам необходимо отключить аппаратную клавиатуру в Android (подробности см. Ниже).
Чтобы отключить аппаратную клавиатуру в Genymotion:
перейдите в
Settings
->Language & input
и откройтеDefault
элемент подKeyboard & Input Methods
. ЕстьHardware
настройка, которую можно включать / выключать. Когда он включен, вы используете свою физическую клавиатуру, а когда она выключена, стандартная программная клавиатура должна всплывать всякий раз, когда текстовое поле получает фокус.Скриншоты для настроек Genymotion:
источник
В версии 2.1.1 - щелкните настройки своего виртуального устройства - затем установите флажок «использовать виртуальную клавиатуру для набора текста».
источник
В AS 1.1.0 есть два места для отмены выбора аппаратной клавиатуры. Этого недостаточно:
Это необходимо сделать (щелкните
Tools | Android | AVD Manager
; затем создайте новый или отредактируйте старый AVD, а затем щелкнитеShow Advanced Settings
; прокрутите вниз и очиститеEnable keyboard input
):источник
Способ включения экранной виртуальной клавиатуры для эмуляторов Android Studio 2+ зависит от уровня API эмулятора. Я протестировал различные методы, начиная с API 15, и записал следующие шаги.
[A] API 15, 17, 19 и 21.
Следующие шаги позволят включить экранную виртуальную клавиатуру, но отключат возможность ввода текста и взаимодействия с AVD с помощью аппаратной клавиатуры компьютера.
[B] API 22
Программная клавиатура отображается независимо от того, что вы делаете с настройками аппаратной клавиатуры. Если вы хотите включить поддержку аппаратной клавиатуры вместе с программной клавиатурой, тогда,
[C] API 23
Если вы хотите использовать аппаратную часть и программную клавиатуру, тогда ...
Если вам не нужна аппаратная клавиатура, в расширенных настройках AVD снимите флажок «Включить ввод с клавиатуры». Вам не нужно менять какие-либо настройки на виртуальном устройстве.
[D] API 24 и 25
Если в AVD была выбрана опция «Включить ввод с клавиатуры», то теперь вы сможете использовать как аппаратный, так и программный ввод с клавиатуры. Если вы сняли флажок в AVD, программная клавиатура будет отображаться независимо.
[E] API 26
Точно так же, как [D] API 24 и 25, за исключением того, что вам нужно перейти через дополнительный уровень меню «Система» в настройках устройства, прежде чем вы перейдете к языку и вводу / физической клавиатуре.
источник
Возможно, ваш эмулятор не поддерживает программную клавиатуру.
Добавьте аппаратное свойство Keyboard support и установите для него значение true для вашего эмулятора.
Если это уже правда, проверьте этот ответ.
источник
Показывать:
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);
Просто попробуйте это ....
источник