Как по умолчанию я использую цифровую клавиатуру на EditText, не форсируя числовой ввод?

Это задано в другом месте онлайн безрезультатно. Есть ли какой-либо способ в Android отображать цифровую клавиатуру при фокусировке на EditText, но все же разрешить ввод какого-либо текста?

Я хочу, чтобы пользователь вводил количество (например, "1 кг", "2 L" ), поэтому установка inputType="number" не будет работать.

Ответ 1

Добавьте следующую строку кода, и она выполнит трюк:)

editText.setRawInputType(Configuration.KEYBOARD_QWERTY);

Сначала будет отображаться цифровая клавиатура, а также позволяет вводить свободный текст.

Подробнее здесь.

Ответ 2

Это может быть зависит от устройства, но вы пробовали:

 android:inputType="phone"

Все типы входных данных

в редакторе EditText xml, это дает вам клавиатуру с цифровым клавиатурой, но затем вы можете переключиться на букву, если хотите. (По крайней мере, на моем Nexus One).

Ответ 3

Обратите внимание, что: setRawInputType (InputType.TYPE_CLASS_NUMBER);

имеет желаемый эффект для некоторых устройств, но не для других...

На htc он отлично работает, однако на вкладке II галактики вы получаете только цифровую клавиатуру и не можете переключиться обратно в альфа.

Ответ 4

напишите код в XML,          Android: числовое = "целое число"          Android: inputType = "телефон"      андроид: цифры = "1234567890"

Ответ 5

Похоже, что основной вопрос, с которым вы имеете дело, заключается в следующем: как я могу позволить пользователю вводить количества?

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

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

Ответ 6

Я пробовал много разных комбинаций, прежде чем я понял это, но это работает правильно:

setRawInputType(InputType.TYPE_CLASS_NUMBER);

Ключ лежит в описании setRawInputType(int):

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