Как сделать так, чтобы программная клавиатура Android никогда не появлялась во всем моем приложении

StackOverflow https://stackoverflow.com/questions/2429595

  •  19-09-2019
  •  | 
  •  

Вопрос

Я разрабатываю приложение для аппаратного устройства со встроенной аппаратной клавиатурой, которая не выдвигается и всегда видна (например, Blackberry).Поэтому я НИКОГДА не хочу, чтобы программная клавиатура отображалась во всем моем приложении.я знаю еще один вопрос ТАК это дает следующие строки кода:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

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

Я также попытался добавить следующее в свой <Activity>:

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

Мягкая клавиатура по-прежнему появляется.

Это было полезно?

Решение

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

Другие советы

Простой обходной путь для завтрашней презентации:

Я бы создал новый IME с пустым представлением.Вот два проекта с открытым исходным кодом, где вы можете посмотреть код.

Если вы хотите узнать больше о методах ввода, перейдите к Создание метода ввода.

Если EditText имеет тип ввода 0, виртуальная клавиатура никогда не появится при выборе этого EditText.

EditText editText = findViewById(R.id.edit_text);
editText.setInputType(0);

Конечно, это необходимо будет сделать для всех EditTexts в вашем приложении, или вы всегда можете создать подкласс EditText и установить тип ввода равным 0 в своем конструкторе.

Установка параметра xml inputType не подойдет, поскольку это соответствует вызову метода setRawInputType, который не удаляет KeyListener.

Я решил это, переопределив метод onCheckIsTextEditor в моем немного специальном EditText.

@Override
public boolean onCheckIsTextEditor() {
    return false;
}

Везде, где у вас есть «Редактировать текст», поместите этот код.

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top