jak ustawić tylko wartość liczbową dla edittext w Androidzie?

209

Mam wartość, edittextw której chcę wstawić tylko wartości całkowite. Czy ktoś może mi powiedzieć, z której nieruchomości mam korzystać?

Sourabh
źródło

Odpowiedzi:

403

Chyba android:inputType="number"atrybuty XML.

Utyi
źródło
11
Człowieku, uwielbiam programistów Androida ... takie zamieszanie, aby uzyskać tę opcję na stronach internetowych!
Alex
14
Cześć, w Androidzie 2.3.3 jest to „numberSigned”. Właśnie to tutaj napisałem, na wypadek, gdyby ktoś tego szukał :)
Sok Cytrynowy
Co się stanie, jeśli mój editText pojawi się w oknie dialogowym, a zatem zadeklaruję go tylko w kodzie .java? tzn. okno dialogowe editText nie pojawia się w pliku XML. Jak mogę to nadal osiągnąć?
Sibbs Gambling
1
Ponadto możesz użyć android:inputType="phone"zamiast tego. Ale wydaje się nieco bardziej „zajęty”.
Chad Bingham
126

Na przykład:

<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
Barmaley Red Star
źródło
3
To najlepsze rozwiązanie!
RRTW,
2
Zakładam, że napis powinien czytać, 0123456789.a nie czytać0123456780.
audiFanatic
Działa to również z Androidem: inputType = "number"! Potrzebowałem go, aby uniemożliwić użytkownikom wpisywanie operatorów, nawiasów itp. Na klawiaturze numerycznej. Co za uratowanie życia, stary! Witamy w Costco; Kocham Cię!
gonzobrains
2
To nie pozwoli ci wstawiać liczb ujemnych, a jednocześnie pozwoli na zduplikowanie miejsc po przecinku. (
Np.
Fajnie, dodając Androida: cyfry obsługują również kopiowanie i wklejanie.
StoneLam
107

W kodzie możesz to zrobić

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);
Sourabh
źródło
@MohamedKhamis to nazwa
EditText
1
Sourabh poprosił o „Wstawić tylko wartości całkowite”. Pozwala to wprowadzić znacznie więcej.
Zon
30

Aby wprowadzić tylko cyfry, użyj android:inputType="numberPassword"wraz z, editText.setTransformationMethod(null);aby usunąć automatyczne ukrywanie numeru.

LUB

android:inputType="phone"

W przypadku wprowadzania tylko cyfr uważam, że te kilka sposobów jest lepszych niż android:inputType="number". Ograniczenie wymieniania „liczby” jako inputType polega na tym, że klawiatura umożliwia przełączanie się na znaki, a także umożliwia wprowadzanie innych znaków specjalnych. „NumberPassword” inputType nie ma tych problemów, ponieważ klawiatura pokazuje tylko cyfry. Nawet wejście „telefon” działa, ponieważ klawiatura nie pozwala na przełączanie się na znaki. Ale nadal możesz wprowadzić kilka znaków specjalnych, takich jak +, /, N itp.

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

inputType = "numberPassword"

inputType = „telefon”

inputType = „telefon”

inputType = „number”

inputType = „number”

Abhiank
źródło
1
To jest doskonałe! android:inputType="numberPassword"wraz zeditText.setTransformationMethod(null);
coderpc
ta wskazówka czyni moją aplikację idealną.
Kernelzero,
6
android:inputType="numberDecimal"
Nafiz
źródło
5
To świetnie, ale system liczb całkowitych nie zawiera liczb dziesiętnych.
RileyE
@RileyE Co przez to rozumiesz? Właśnie zaczęliśmy używać tego do wszystkich danych liczbowych i chcę się upewnić, że czegoś nie umknie. Dzięki!
Joshua Pinter
4
<EditText
android:id="@+id/age"
android:numeric="integer" 
/>
Sandeep V.
źródło
3
Android: numeryczny jest przestarzały od API 3, patrz odpowiedź na stackoverflow.com/questions/12625380/…
winne2
2

skorzystanie z poniższych może lepiej rozwiązać problem;

w xml:

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

lub // w działaniu wewnątrz 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();
            }
Rushi Ayyappa
źródło
2

Jeśli ktoś chce użyć tylko numeru od 0 do 9 z imeOptionswłączeniem, użyj poniższej linii w swoimEditText

android: inputType = "number | none"

Pozwoli to tylko na liczbę, a jeśli klikniesz przycisk Gotowe / Dalej na klawiaturze, fokus przejdzie do następnego pola.

Sandeep
źródło
0

Możesz go użyć w formacie XML

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

lub,

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

lub,

android:inputType="phone"

Programowo możesz użyć
editText.setInputType (InputType.TYPE_CLASS_NUMBER);

Rubela Shome
źródło
0

Muszę złapać naciśnięcie Enter na klawiaturze z TextWatcherem . Ale dowiedziałem się, że wszystkie klawiatury numeryczne dla Androida: inputType = „number” lub „numberDecimal” lub „numberPassword” itp. Nie pozwalają mi złapać Enter, gdy użytkownik je naciśnie.

Próbowałem android:digits="0123456789\n"i wszystkie klawiatury numeryczne zaczęły współpracować z Enter i TextWatcher.

Więc moja droga to:

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

plus editText.setTransformationMethod(null)

Dzięki barmaley i abhiank.

Alexander Key
źródło
0

Nie wiem, jaka była prawidłowa odpowiedź w '13, ale dzisiaj brzmi:

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

Dostajesz wszystko, w tym klawiatura ekranowa to klawiatura numeryczna.

Prawie wszystko. Espresso, w swojej nieskończonej mądrości, pozwala w typeText("...")niewytłumaczalny sposób ominąć filtr i dostać się do śmieci ...

Phlip
źródło
-4

najprostszy dla mnie

android:numeric="integer" 

chociaż to również bardziej dostosowuje

android:digits="0123456789"
Henry Simon
źródło
Android: numeryczny jest przestarzały od API 3, patrz odpowiedź na stackoverflow.com/questions/12625380/…
winne2