Android Как показать цифровую программную клавиатуру с EditText of InputType = "text" - PullRequest
2 голосов
/ 03 февраля 2012

Мне нужно разрешить пользователю вводить числовую информацию в EditText, но вывод должен быть отформатирован как "##. ###, ##" (# в [0..9]).Форматирование, которое я сделал в TextWatcher ... это хорошо, TextWatcher выполняет свою работу ... но, когда пользователь выбирает EditText, как он помечен как текст, отображается AlphaKeyboard, если я выбираю EditText как числовойМне нужна клавиатура и TextWatcher перестает работать.

Ответы [ 4 ]

0 голосов
/ 03 февраля 2012

Поскольку вы выполняете форматирование в TextWatcher (##, #### ....), т.е. вы добавляете «,» в EditText, и вы сделали EditText как числовой.Если его число, то "," символ недействителен.Таким образом, TextWatcher не может обновлять форматированный текст, содержащий ', ".

. У вас есть 3 варианта решения этой проблемы:

  1. Установите EditText как обычный, а не числовой.В TextWatcher обратите внимание на любые другие недопустимые символы, кроме 0-9. Вы можете показать IME для клавиатуры Mumber, когда фокус находится на EditText.
  2. Использовать маску для EditText.
  3. Пусть это будетчисловой. Ловушка FocusGain и FocusLost для EditText. В focusGain удалите форматирование и установите для inputType значение Numeric. & В focusLost сначала задайте для типа ввода значение Normal, а затем обновите введенное значение до значения formmated.для нормальной работы во время выполнения, используя setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL); & для числового использования: setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);

Я считаю, что 1-й вариант будет лучшим для обработки и управления.

0 голосов
/ 03 февраля 2012

Вам нужно изменить запись edittext следующим образом.

<EditText android:inputType="phone" android:numeric="decimal"></EditText> 
0 голосов
/ 03 февраля 2012

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

 InputMethodManager imm = (InputMethodManager) getSystemService(
        Context.INPUT_METHOD_SERVICE);
  imm.showSoftInputFromInputMethod(v.getApplicationWindowToken(), 1);
0 голосов
/ 03 февраля 2012

вставьте следующее в ваш xml в необходимом тексте редактирования

<EditText android:inputType="number" ... />

см. Как мне показать цифровую клавиатуру на EditText в Android?

...