Jak wyświetlić klawiaturę numeryczną w EditText w systemie Android?

146

Po prostu chcę przejść do trybu klawiatury numerycznej, gdy tylko określony EditText stanie się aktywny.

Chiwai Chan
źródło
4
Pytanie nie określa konkretnie chęci zmiany dozwolonego typu danych wejściowych. Po prostu pyta, jak zmienić tryb klawiatury, co chciałbym zrobić bez zmiany typu wprowadzania. Wszystkie odpowiedzi wyjaśniają, jak zmienić typ danych wejściowych.
AlanKley
Sprawdź moją odpowiedź na to pytanie stackoverflow.com/questions/39593324/ ...
Pomoc Androida

Odpowiedzi:

261

Możesz skonfigurować inputTypedla swojego EditText:

<EditText android:inputType="number" ... />
Josef Pfleger
źródło
6
Zwróć też uwagę, że aby z tego korzystać, musisz wybrać system Android 1.5 (nie jest dostępny w wersji 1.1)
Wilka
4
Problem w tym, że nie możesz wrócić. Używanie "liczba | tekst" też nie działa. Wygląda na to, że jeśli chcesz wyświetlić klawiaturę numeryczną, nie możesz pozwolić jej przełączyć się z powrotem na tekst.
Zgadzam się z Brianem… jeśli pierwsze pole jest alfa, a następne jest numeryczne, nie mogę przejść do następnego pola przyciskiem „Dalej”!
Ahmed
Myślę, że możesz wrócić, czy nie, zależy to od telefonu. Mój na to pozwala.
Martin Clemens Bloch
Chcę zmienić numer typu klawiatury i chcę wkleić tekst w edytorze. Jak zrobić?
İbrahim YANIK
115

Aby to zrobić w pliku Java:

EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
Dominic
źródło
51

Uważam, że ta implementacja jest przydatna, pokazuje lepszą klawiaturę i ogranicza znaki wejściowe.

<EditText
    android:inputType="phone"
    android:digits="1234567890"
    ...
/>

Dodatkowo możesz użyć, android:maxLengthaby ograniczyć maksymalną liczbę liczb.

Aby zrobić to programowo:

editText.setInputType(InputType.TYPE_CLASS_PHONE);

KeyListener keyListener = DigitsKeyListener.getInstance("1234567890");
editText.setKeyListener(keyListener);
Matthijs
źródło
Czy istnieje sposób, aby zrobić to programowo? Umiera, aby dostać klawiaturę z ograniczoną liczbą dla mojego EditText, ale jest skonfigurowana w taki sposób, że musi zostać wygenerowana w działaniu.
Martin Erlic
18
<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ...
    android:inputType="number|phone"/> 

pokaże dużą klawiaturę numeryczną jako dialer.

Nguyen Minh Binh
źródło
11

Możesz to zrobić na dwa sposoby

  1. Zestaw uruchomieniowy

    EditText input = new EditText(this);
    input.setInputType(InputType.TYPE_CLASS_NUMBER);
  2. Korzystanie z XML

    <EditText
        ...
        android:inputType="number" />
Nirav Ranpara
źródło
5

Jeśli potrzebujesz liczby ułamkowej, oto odpowiedź dla Ciebie:

android:inputType="numberDecimal"
macio.Jun
źródło
4

Jeśli używasz EditText w oknie dialogowym lub tworzysz dynamicznie i nie możesz ustawić go z xml, ten przykład pomoże ci ustawić ten typ klawiatury podczas korzystania z dynamicznej edycji tekstu itp.

myEditTxt.setInputType(InputType.TYPE_CLASS_NUMBER);

gdzie myEditTxt to dynamiczny obiekt EDIT TEXT (nazwa)

Pir Fahim Shah
źródło
2
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER);
Aliya
źródło
Jeśli ręcznie formatujesz tekst (na przykład walutę) i chcesz sterować tylko klawiaturą, to jest wybór. Nie będzie filtrować Twoich znaków. Dzięki!
lauksas
To zadziałało na mnie jak urok. Chcę wyświetlić tekstową wartość zastępczą, gdy pole nie zostało jeszcze edytowane, ale nadal ograniczam dane wejściowe do liczb i wyświetlam ograniczoną klawiaturę.
Alex Suzuki,
2

Więcej typów danych wejściowych i szczegółów można znaleźć tutaj w witrynie Google

sai Gorantla
źródło
2

Poniższy kod dopuszcza tylko cyfry „0123456789”, nawet jeśli przypadkowo wpiszesz inny niż „0123456789”, tekst edycji nie zostanie zaakceptowany.

    EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
    number1.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_CLASS_PHONE);
    number1.setKeyListener(DigitsKeyListener.getInstance("0123456789”));
Akhila Madari
źródło
Powinieneś dodać komentarz wyjaśniający twój kod i dlaczego jest to rozwiązanie
cyroxis
1

Użyj poniższego kodu w pliku java

editText.setRawInputType (Configuration.KEYBOARD_QWERTY);

Darshuu
źródło
0

Zdefiniuj to w swoim kodzie xml

android:inputType="number"
fulgen
źródło
0
EditText number1 = (EditText) layout.findViewById(R.id.edittext); 
number1.setInputType(InputType.TYPE_CLASS_NUMBER);
Shiv Buyya
źródło
Jeśli masz EditText number1 utworzony w kodzie XML układu, to jeśli chcesz ustawić klawiaturę numeryczną na numer 1 EditText, możesz to zrobić za pomocą kodu Java.
Shiv Buyya