TextInputEditText для отображения числовой клавиатуры c, но также позволяет / - PullRequest
0 голосов
/ 07 апреля 2020

Я пытался адаптировать мою TextInputEditText, которая в настоящее время показывает цифру c клавиатуру (в xml она имеет android:inputType="numberDecimal"), чтобы разрешить ввод символа / (нажав кнопку в пользовательский интерфейс, который добавляет / к EditText).

Чего я хочу достичь: цифровая клавиатура c и разрешено вводить / в EditText

Все, что я пробовал, либо не показывает числовую c клавиатуру, либо не позволяет мне добавить / к EditText.

Вещи, которые я имею пробовал:

  1. Добавление android:digits="0123456789./" к xml

Результат: Это все еще числовой c ввод и не позволит мне .append("/")

Установка android:inputType="text" в xml и ниже в onCreate()
        input.setFilters(new InputFilter[] {(src, start, end, dst, dstart, dend) -> {
            if(src.toString().matches("[0123456789./]+")){
                return src;
            }
            return "";
        }});

Результат: я не получаю цифру c клавиатуру ( хотя я могу вводить только те символы, которые мне нужны, и это хорошо)

android:inputType="text" с android:digits="0123456789./", поскольку это, как представляется, предлагается несколько раз для различных ответов SO (и я полагаю, что в какой-то момент это сработало).

Результат: нечисловая c клавиатура (т.е. обычная клавиатура для ввода текста)

1 Ответ

0 голосов
/ 07 апреля 2020

Удаление android:inputType и android:digits из xml, а также добавление приведенного ниже к onCreate() действия, похоже, помогает.

input.setKeyListener(DigitsKeyListener.getInstance("0123456789./"));

Однако это не совсем ясно мне, что это должно или всегда будет работать - см. примечание ниже из документации по DigitsKeyListener ...

Что касается всех реализаций KeyListener, этот класс касается только аппаратных клавиатур , Программные методы ввода не обязаны запускать методы этого класса.

Источник: https://developer.android.com/reference/android/text/method/DigitsKeyListener

...