У меня есть пользовательский EditText, который я использую для ввода последовательности цифр. Я установил DigitsKeyListener (getInputType() = 2) на нем в конструкторе класса.
Это делает "правильную вещь" на Галактике S (4.0). Клавиатура, которая появляется, когда точка зрения получает фокус, имеет только цифры, "пробел", период, запятую, тире, обратное пространство и "сделано".
Однако на более старом 2.2-устройстве клавиатура, которая появляется, имеет буквы и гораздо более широкий диапазон символов, ни один из которых мне не нужен.
Я нашел пример онлайн, который предложил:
setRawInputType(Configuration.KEYBOARD_12KEY);
в конце инициализации. Это значение равно "3". Когда я это делаю, ситуация меняется на два телефона. На клавиатуре Galaxy S теперь есть буквы (рядом с каждым номером, например, на телефоне), тогда как клавиатура на устройстве 2.2 - это то, что я хочу (то есть в основном калькулятор).
Есть ли один единый способ получить "калькулятор" клавиатуру, которая работает в разных версиях, или это ситуация, когда мне нужно сделать одну вещь для версий SDK <= X и другую для версий> X?
Если да, то какова должна быть величина "Х"? Это что-то, что изменилось с помощью особого выпуска?
Вы должны установить для атрибута inputType
значение "number"
или выполнить эквивалентный вызов во время выполнения.
inputType
- это подсказки, а не требования. Черт возьми, для некоторых редакторов методов ввода (например, Graffiti) будут точно нулевые клавиши, потому что они используют другие параметры ввода (например, жесты).