Показывать только числовые кнопки на Soft Keyboard в Android?

На мягкой клавиатуре в Android вы можете настроить мягкую клавиатуру для отображения чисел вместо клавиатуры z-z, используя android:inputType="numberDecimal". Однако, что мне делать, если я хочу показать строку верхнего номера 1 2 3 4 5 6 7 8 9 0, а не следующие строки, начиная с @ # $ % ...?

Thanx для прослушивания!

Ответ 1

Вы должны добавить эту строку только в свой код:

input.setRawInputType(Configuration.KEYBOARD_12KEY);

будет отображаться только цифровая клавиатура.

Ответ 2

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

является опцией

Ответ 3

Телефонная панель - это самая близкая вещь, которую я нашел (установите inputType="phone" на EditText).

Ответ 4

В последнее время я просмотрел его, у Android не было никаких хороших вариантов для этого. В итоге мне пришлось написать свою собственную версию мягкого пользовательского интерфейса, подобного клавиатуре.

Ответ 5

Только что отправил ответ здесь, но повторно разместил для простоты:

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

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

Ответ 6

Я реализовал это для android в Xamarin. Итак, мой код находится на С#. Но главный остается неизменным. Вы можете установить атрибут edittext в android:inputType="numberPassword".

Затем в вашем коде вы добавляете собственный метод преобразования в свой вид edittext.

holder.edtxtQty.TransformationMethod = new HiddenPasswordTransformationMethod();

private class HiddenPasswordTransformationMethod : global::Android.Text.Method.PasswordTransformationMethod
        {
            public override Java.Lang.ICharSequence GetTransformationFormatted(Java.Lang.ICharSequence source, View view)
            {
                return new PasswordCharSequence(source);
            }
        }

    private class PasswordCharSequence : Java.Lang.Object, Java.Lang.ICharSequence
    {
        private char DOT = '\u2022';

        private Java.Lang.ICharSequence _source;
        public PasswordCharSequence(Java.Lang.ICharSequence source)
        {
            _source = source;
        }

        public char CharAt(int index)
        {
            return _source.CharAt(index);
        }

        public int Length()
        {
            return _source.Length();
        }

        public Java.Lang.ICharSequence SubSequenceFormatted(int start, int end)
        {
            return _source.SubSequenceFormatted(start, end); // Return default
        }

        public IEnumerator<char> GetEnumerator()
        {
            return _source.GetEnumerator();
        }

        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return _source.GetEnumerator();
        }
    }