як встановити лише числове значення для edittext в android?


209

У мене є ін, edittextв який я хочу вставити лише цілі значення. Хтось може сказати мені, яким майном я повинен користуватися?

Відповіді:


403

Я здогадуюсь android:inputType="number"про атрибути XML.


11
Людина, я люблю Android Dev ... така метушня отримати цю опцію на веб-сторінках!
Олексій

14
Привіт, в android 2.3.3, це "numberSigned". Просто записав це тут, на випадок, якщо хтось шукає його :)
Лимонний сік

Що робити, якщо мій editText з'явиться у діалоговому вікні, і, таким чином, я оголошу його лише у .java-коді? тобто діалогове вікно editText не відображається у файлі XML Як я ще можу цього досягти?
Сіббс Азартні ігри

1
Крім того, ви можете використовувати android:inputType="phone"замість цього. Але це здається трохи «зайнятим».
Чад Бінгем

126

Наприклад:

<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>

3
Це найкраще рішення!
RRTW

2
Я припускаю, що рядок повинен читатися, 0123456789.а не0123456780.
audiFanatic

Це працює і з android: inputType = "число" також! Мені це було потрібно для того, щоб користувачі не вводили операторів, дужок тощо на цифровій панелі. Який рятівник життя, чоловіче! Ласкаво просимо до Costco; Я тебе люблю!
gonzobrains

2
Це не дозволить вам ставити від'ємні числа, і в той же час це дозволить повторювати десяткові знаки. (Напр .: 1.1.1 .....)
Rushi Ayyappa

Приємно, додаючи Android: цифри також обробляють корпус копіювання та вставки.
StoneLam

107

У коді ви могли б зробити

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

@MohamedKhamis це ім'я EditText
KERiii

1
Сураб попросив "Вставити лише цілі значення". Це дозволяє ввести набагато більше.
Зон

30

Для введення цифр використовують лише цифри android:inputType="numberPassword"разом із editText.setTransformationMethod(null);видаленням автоматичного приховування числа.

АБО

android:inputType="phone"

Що стосується лише введення цифр, я вважаю, що ці два способи є кращими ніж android:inputType="number". Обмеженням згадування "числа" як inputType є те, що клавіатура дозволяє переходити на символи, а також дозволяє вводити інші спеціальні символи. "numberPassword" inputType не має таких проблем, оскільки на клавіатурі відображаються лише цифри. Навіть "телефонний" вхід типу працює, оскільки клавіатура не дозволяє переходити до символів. Але ви все одно можете ввести пару спеціальних символів, таких як +, /, N тощо.

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

inputType = "номерPassword"

inputType = "телефон"

inputType = "телефон"

inputType = "число"

inputType = "число"


1
Це прекрасно! android:inputType="numberPassword"разом зeditText.setTransformationMethod(null);
coderpc

ця порада робить те, що моя заява зроблена ідеальною.
Кернелзеро

6
android:inputType="numberDecimal"

5
Це чудово, але система числення цілих чисел не містить десяткових чисел.
RileyE

@RileyE Що ти маєш на увазі під цим? Ми тільки почали використовувати це для всіх наших числових входів, і я хочу переконатися, що ми щось не пропускаємо. Дякую!
Джошуа Пінтер


2

використання наведеного нижче може краще вирішити вашу проблему;

в 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();
            }

2

Якщо хтось хоче використовувати лише номер від 0 до 9 з imeOptionsувімкненням, тоді використовуйте нижче рядок у вашомуEditText

android: inputType = "число | немає"

Це дозволить лише номер, і якщо натиснути на готову / наступну кнопку клавіатури, фокус перейде до наступного поля.


0

Ви можете використовувати його в 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);


0

Мені потрібно зловити натискання клавіші Enter на клавіатурі за допомогою TextWatcher . Але я з'ясував, що всі цифрові клавіатури android: inputType = "число" або "numberDecimal" або "numberPassword" тощо не дозволяють мені зловити Enter, коли користувач натискає на нього.

Я спробував, android:digits="0123456789\n"і всі цифрові клавіатури почали працювати з Enter та TextWatcher.

Тож мій шлях такий:

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

плюс editText.setTransformationMethod(null)

Завдяки бармале та абхіанку.


0

Я не знаю, яка була правильна відповідь у 13 році, але сьогодні це:

myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers

Ви отримуєте все, в тому числі на екранній клавіатурі - це цифрова клавіатура.

ВСІМО все. Еспресо в своїй безмежній мудрості дозволяє необмежено typeText("...")обійти фільтр і ввести сміття ...


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.