Есть ли способ получить программную клавиатуру Android, которая имеет только цифры (без десятичных знаков, пробелов) с кодом Java?

У меня есть приложение для iPhone, которое использует различные раскладки клавиатуры. Некоторые из них на заказ, а некоторые встроены в:

Только числа:

Только числа

Десятичные:

Десятичные

Пользовательская кнопка X для номеров ISBN:

Пользовательская кнопка X для номеров ISBN

Я хотел бы сделать то же самое на Android, но даже нормальный InputType.TYPE_CLASS_NUMBER по-прежнему включает десятичные дроби, пробел, запятую и т. д.

Android

Как я могу настроить клавиатуру в Android??

5 ответов

Решение

Это невозможно с помощью встроенной клавиатуры. Вам придется разработать пользовательскую программную клавиатуру или написать встроенное представление, которое работает как замена клавиатуры.

Я думаю, что на этот вопрос уже ответили на Stackru. Посмотри на это:

Показывать только цифровые кнопки на Soft Keyboard в Android?

@twaddington правильно, что то, что вы просите, не будет возможно со встроенной клавиатурой. Чтобы предотвратить ввод нецифровых символов, необходимо установить в XML следующее EditText,

android:inputType="phone"
android:digits="1234567890"

Если вы хотите это в коде, а не в XML, я думаю, что это должно работать:

numericField.setInputType(Configuration.KEYBOARD_12KEY);
numericField.setKeyListener(new DigitsKeyListener());

Этот учебник может помочь в разработке вашей собственной цифровой программной клавиатуры.

Пожалуйста, используйте inputType = "number", тогда вы получите только цифровую клавиатуру.

<EditText android:inputType="number"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

Я надеюсь, что это поможет вам.:)

Кажется, Android добавил функциональность, которую мы искали. Это xml, который я использую для простого ввода чисел EditText:

    android:inputType="numberPassword"
    android:digits="0123456789"
    android:singleLine="true"
    android:ems="4"
    android:textColor="@android:color/black"
    android:gravity="center"

Есть выход. использование

numericField.setInputType(InputType.TYPE_NUMBER_VARIATION_NORMAL|InputType.TYPE_CLASS_NUMBER);

Он ожидает цифровую клавиатуру только на Holo и обратно совместимую цифровую клавиатуру на младших версиях.

Другие вопросы по тегам