суббота, 5 ноября 2011 г.

Цифровая клавиатура

Временами возникает необходимость чтобы пользователь ввел в программе число. Это может быть почтовый индекс или какая-то сумма. Число может быть целым или вещественным или отрицательным. На первый взгляд в Android - это простейшая задача. В элементе интерфейса EditText для всех этих вариантов предусмотрены соответствующие свойства. Вот так вот выглядит описание простейшего поля для ввода натурального числа.
<EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:inputType="number"/>
Однако, это описание не дает понять насколько удобно пользователю будет вводить число. Какая клавиатура будет открыта при получение фокуса этим полем зависит от установленной на устройстве программы для отображения клавиатуры. На Samsung Galaxy S открывается аккуратная клавиатура с большими числами, а вот на устройствах от остальных производителей открывается стандартная клавиатура с четырьмя рядами клавиш из которых цифры занимают только верхний ряд. То есть три четверти пространства клавиатуры пропадают зря.
Цифровая клавиатура на Samsung GalaxyОбычная цифровая клавиатура

Можно развести руками, а можно немного исправить ситуацию. У всех устройств есть нужная клавиатура, которая состоит из больших цифр - эта клавиатура для набора телефонного номера. У нее, однако, есть недостаток - в ней можно вводить дополнительные символы, пробелы, использовать несколько минусов-тире. Но EditText предоставляет второй механизм ограничить какие символы можно вводить при помощи поля android:digits. В этом поле нужно задать список символов и все остальные символы не попадающие в этот список будут игнорироваться. Если задать в нем только цифры, то задача для натуральных чисел будет решена.
<EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:inputType="phone"
 android:digits="1234567890"/>
В результате на Motorola Droid мы получим такую клавиатуру:
Итоговая цифровая клавиатура

3 комментария:

  1. Константин, здравствуйте.
    По роду службы, да и просто из интереса, очень хотелось бы заиметь себе такую же цифровую клавиатуру. Однако, я совершенный чайник, и даже не смог отыскать, что же такое EditText.
    Подобную клавиатуру ищу уже не первый месяц, безуспешно. Могли бы Вы как-то помочь? Может быть расскажите подробнее о том, как произвести такие манипуляции с родной клавиатурой (я пользуюсь htc hd2 с прошивкой от desire). Либо - но это уж я черезчур нагло - может быть подкинете мне уже готовый apk файл с такой клавиатурой?
    Очень надеюсь на помощь. Нашел Ваш блог недавно, весьма нравится круг освещаемых вопросов:-)
    Спасибо!

    ОтветитьУдалить
    Ответы
    1. EditText - это один из элементов интерфейса, который используется при разработке Андроид приложений. Ни скриншоте не какая-то специальная клавиатура, а обычная клавиатура, которая работает в специальном режиме.
      Я не встречался с клавиатурами, которые всегда работают в таком режиме, но, скорее всего, они существуют. Рекомендую вам русскоязычное сообщество на форуме сайта 4pda.ru, скорее всего там вам кто-то сможет подсказать нужную клавиатуру.

      Удалить
    2. Спасибо! 4pda просматриваю регулярно, но так ничего и не нашел. Что же, буду дальше искать)

      Удалить