Показывать только цифровые кнопки на Soft Keyboard в Android? - PullRequest
35 голосов
/ 29 июля 2010

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

Спасибо за прослушивание!

Ответы [ 8 ]

63 голосов
/ 29 июля 2010
android:inputType="phone"
android:digits="1234567890"

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

40 голосов
/ 28 октября 2012

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

input.setRawInputType(Configuration.KEYBOARD_12KEY);

это покажет только цифровая клавиатура.

10 голосов
/ 29 июля 2010

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

3 голосов
/ 12 июля 2018

Принятый ответ у меня не сработал (проверено на телефонах OnePlus 3t и Samsung Galaxy S6 / S7).

Это решение использует numberPassword, но переопределяет метод преобразования по умолчанию для EditText, чтобы показать символы вместо отображения точек.

<EditText
    android:id="@+id/userid"
    android:inputType="numberPassword"
    android:maxLength="6"
/>

// Numeric 6 character user id
EditText input = findViewById(R.id.userid);

// Process input and show characters instead of dots
input.setTransformationMethod(SingleLineTransformationMethod.getInstance());
1 голос
/ 24 ноября 2015

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

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

    android:inputType="numberPassword"
    android:digits="0123456789"
    android:singleLine="true"
    android:ems="4"
    android:textColor="@android:color/black"
    android:gravity="center"
1 голос
/ 29 июля 2010

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

0 голосов
/ 04 мая 2018

Принятый ответ не сработал для меня.В нем постоянно отображались другие нежелательные символы

Я нашел способ выполнить желаемое поведение, изменив inputType на numberPassword, а затем отключив точки пароля

textInput.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD
textInput.transformationMethod = SingleLineTransformationMethod()
0 голосов
/ 18 января 2016

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

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

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();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...