Как отключить программную клавиатуру Android для определенного действия?

У меня есть действие с одним EditText, где мне нужно вводить только числа.

Теперь, Я определил тип ввода для моего EditText только как номер и нарисовал красивую клавиатуру для использования моим пользователем, однако мне также нужно убедиться, что мягкая клавиатура не появляется для моего пользователя, когда они нажимают на EditText .

Я попытался скрыть клавиатуру через манифест, добавив

android:windowSoftInputMode="stateAlwaysHidden"

в свой манифест для конкретного действия, но это не сработало для меня, потому что как только пользователь нажимает на EditText, клавиатура появляется снова.

Я пробовал делать то же самое программно

activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

, но это тоже не работает. Клавиатура появляется, когда пользователь щелкает EditText.

Единственное, что сработало, это установка InputType на null для EditText, например:

EditText.setInputType(InputType.TYPE_NULL);

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

Я также должен упомянуть, что в настоящее время я тестирую свое приложение на Android 2.1, но я бы хотел, чтобы мое решение работало во всех версиях. Любая помощь будет оценена. Заранее спасибо.

10
задан Gligor 1 May 2011 в 20:53
поделиться