Тип клавиатуры управления для Android EditText (только цифры)

1

У меня есть пользовательский EditText, который я использую для ввода последовательности цифр. Я установил DigitsKeyListener (getInputType() = 2) на нем в конструкторе класса.

Это делает "правильную вещь" на Галактике S (4.0). Клавиатура, которая появляется, когда точка зрения получает фокус, имеет только цифры, "пробел", период, запятую, тире, обратное пространство и "сделано".

Однако на более старом 2.2-устройстве клавиатура, которая появляется, имеет буквы и гораздо более широкий диапазон символов, ни один из которых мне не нужен.

Я нашел пример онлайн, который предложил:

    setRawInputType(Configuration.KEYBOARD_12KEY);

в конце инициализации. Это значение равно "3". Когда я это делаю, ситуация меняется на два телефона. На клавиатуре Galaxy S теперь есть буквы (рядом с каждым номером, например, на телефоне), тогда как клавиатура на устройстве 2.2 - это то, что я хочу (то есть в основном калькулятор).

Есть ли один единый способ получить "калькулятор" клавиатуру, которая работает в разных версиях, или это ситуация, когда мне нужно сделать одну вещь для версий SDK <= X и другую для версий> X?

Если да, то какова должна быть величина "Х"? Это что-то, что изменилось с помощью особого выпуска?

  • 1
    «Есть ли единый способ получить« калькуляторную »клавиатуру, которая работает в разных версиях» - нет. «Или это ситуация, когда мне нужно сделать одно для версий SDK <= X, а другое для версий> X?» - тоже нет. Пользователи и производители устройств могут использовать любые редакторы методов ввода, которые они пожелают. Разработчики редакторов методов ввода могут использовать любые дизайны, которые они хотят. Такие вещи, как inputType - это подсказки, а не требования. Черт возьми, для некоторых редакторов методов ввода (например, Graffiti) будут точно нулевые клавиши, потому что они используют другие параметры ввода (например, жесты).
  • 0
    Я спросил о версиях SDK, потому что у меня есть способ заставить его делать то, что я хочу, как на 2.2, так и на 4.0, только они не одинаковы. Чтобы получить метод ввода калькулятора на 2.2, я устанавливаю RawInputType (Configuration.KEYBOARD_12KEY). Чтобы получить его на 4.0, все, что мне нужно, это установить setInputType (InputType.TYPE_CLASS_NUMBER) или установить DigitsKeyListener вручную.
Показать ещё 2 комментария
Теги:
android-softkeyboard
android-keypad

1 ответ

5

Вы должны установить для атрибута inputType значение "number" или выполнить эквивалентный вызов во время выполнения.

  • 0
    Установка DigitsKeyListener в качестве KeyListener делает это, по крайней мере, на 4.0. Интерфейс KeyListener имеет метод getInputType (), который я предполагаю, что Textview использует при выяснении, какую клавиатуру вызывать. Возможно, более старые версии TextView не запрашивают зарегистрированные KeyListeners, и мне нужно явно установить тип ввода. Попробую это дальше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню