Как предотвратить появление софт-клавиатуры Android во всем моем приложении - PullRequest
3 голосов
/ 12 марта 2010

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

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

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

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

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

Софт-клавиатура все еще появляется.

Ответы [ 5 ]

5 голосов
/ 12 марта 2010

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

2 голосов
/ 16 марта 2011

Я решил эту проблему, переопределив метод onCheckIsTextEditor в своем собственном редактированном EditText.

@Override
public boolean onCheckIsTextEditor() {
    return false;
}
2 голосов
/ 18 января 2011

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

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

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

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

2 голосов
/ 12 марта 2010

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

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

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

0 голосов
/ 10 мая 2013

Где бы у вас не было Редактировать текст, введите этот код ..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}
...