Odpowiedzi:
Chyba android:inputType="number"
atrybuty XML.
android:inputType="phone"
zamiast tego. Ale wydaje się nieco bardziej „zajęty”.
Na przykład:
<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
0123456789.
a nie czytać0123456780.
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 = „telefon”
inputType = „number”
android:inputType="numberPassword"
wraz zeditText.setTransformationMethod(null);
android:inputType="numberDecimal"
<EditText
android:id="@+id/age"
android:numeric="integer"
/>
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();
}
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);
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.
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 ...
najprostszy dla mnie
android:numeric="integer"
chociaż to również bardziej dostosowuje
android:digits="0123456789"