Как установить только числовое значение для редактирования текста в Android? - PullRequest
193 голосов
/ 10 января 2011

У меня есть edittext, в который я хочу вставить только целочисленные значения.Может кто-нибудь сказать мне, какое свойство я должен использовать?

Ответы [ 11 ]

382 голосов
/ 10 января 2011

Я думаю android:inputType="number" в атрибутах xml.

122 голосов
/ 10 января 2011

Например:

<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
104 голосов
/ 19 апреля 2011

В коде вы могли бы сделать

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);
25 голосов
/ 01 марта 2017

Для ввода только цифр используйте android:inputType="numberPassword" вместе с editText.setTransformationMethod(null);, чтобы удалить автоматическое скрытие номера.

ИЛИ

android:inputType="phone"

Для ввода только цифр, я считаю, что эти два способа лучше, чем android:inputType="number". Ограничение упоминания числа в качестве inputType заключается в том, что клавиатура позволяет переключаться на символы, а также позволяет вводить другие специальные символы. У inputType «numberPassword» таких проблем нет, так как клавиатура показывает только цифры. Даже «телефонный» тип ввода работает, так как клавиатура не позволяет переключаться на символы. Но вы все равно можете ввести пару специальных символов, таких как +, /, N и т. Д.

android: inputType = "numberPassword" с editText.setTransformationMethod (null);

inputType=

inputType = "телефон"

inputType=

inputType = "номер"

inputType=

6 голосов
/ 04 января 2012
android:inputType="numberDecimal"
4 голосов
/ 30 апреля 2014
<EditText
android:id="@+id/age"
android:numeric="integer" 
/>
2 голосов
/ 03 февраля 2017

Если кто-то хочет использовать только число от 0 до 9 с включенной imeOptions, используйте строку ниже в вашем EditText

android: inputType = "number | none"

Это разрешит только номер, и если вы нажмете кнопку «Готово / следующее» на клавиатуре, ваш фокус перейдет к следующему полю.

2 голосов
/ 07 апреля 2016

с помощью приведенных ниже может решить вашу проблему лучше;

в xml:

<EditText
      android:id="@+id/age"
      android:inputType="numberDecimal|numberSigned"        />

или // в действии внутри etfield.addtextchangelistener

     private String blockCharacterSet="+(/)N,*;#";//declare globally
               try {
                for (int i = 0; i < s.length(); i++) {


                    if (blockCharacterSet.contains(s.charAt(i) + "")) {

                        String corrected_settempvalue = arrivalsettemp.substring(0, arrivalsettemp.length() - 1);
                        et_ArrivalSetTemp.setText(corrected_settempvalue);
                        if (corrected_settempvalue.length() != 0)
                            et_ArrivalSetTemp.setSelection(corrected_settempvalue.length());

                    }
                }
            } catch (Exception d) {
                d.printStackTrace();
            }
0 голосов
/ 07 сентября 2018

Мне нужно поймать нажатие Enter на клавиатуре с помощью TextWatcher .Но я обнаружил, что все цифровые клавиатуры android: inputType = "number" или "numberDecimal" или "numberPassword" и т. Д. Не позволяют мне перехватывать Enter, когда пользователь нажимает его.

Я пытался android:digits="0123456789\n" и всечисловые клавиатуры начали работать с Enter и TextWatcher.

Итак, мой способ:

android:digits="0123456789\n"
android:inputType="numberPassword"

plus editText.setTransformationMethod(null)

Благодаря barmaley и abhiank.

0 голосов
/ 27 февраля 2018

Вы можете использовать его в XML

<EditText
 android:id="@+id/myNumber"
 android:digits="123"
 android:inputType="number"
/>

или

android:inputType="numberPassword" along with editText.setTransformationMethod(null); to remove auto-hiding of the number.

или

android:inputType="phone"

Программно можно использовать
editText.setInputType(InputType.TYPE_CLASS_NUMBER);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...