Zasadniczo próbuję programowo ustawić wartość cyfr w EditText. Jak dotąd mam:
weightInput.setInputType(InputType.TYPE_CLASS_PHONE);
weightInput.setKeyListener(DigitsKeyListener.getInstance());
Co jest w porządku, ale chcę też mieć możliwość uwzględnienia miejsca dziesiętnego (.). Jakieś pomysły?
android
android-edittext
ryandlf
źródło
źródło
DialerKeyListener
zamiastDigitsKeyListener
Odpowiedzi:
Spróbuj tego:
<EditText android:inputType="number" android:digits="0123456789." />
Z kodu:
weightInput.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
Ale pozwala użytkownikowi dołączyć kilka „.” Zobacz odpowiedź JoeyRA na liczby rzeczywiste.
źródło
TextView
źródła:// If no input type was specified, we will default to generic text, since we can't tell the IME about the set of digits that was selected.
.
po 9?Spróbuj tego:
weightInput.setInputType(InputType.TYPE_CLASS_NUMBER); weightInput.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL); weightInput.setKeyListener(DigitsKeyListener.getInstance(false,true));
public static DigitsKeyListener getInstance (boolean sign, boolean decimal)
Zwraca DigitsKeyListener, który akceptuje cyfry od 0 do 9 oraz znak minus (tylko na początku) i / lub przecinek dziesiętny (tylko jeden na pole), jeśli został określony.
To rozwiązuje problem wielu „.” w EditText
źródło
setInputType
raz po raz, czy nie zastąpi to drugiego do pierwszego? Myślę, że powinieneś użyć,weightInput.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
ale nie jestem w 100% pewienUżyj
InputType.TYPE_NUMBER_FLAG_DECIMAL
.Zobacz także: Typy danych wejściowych .
źródło
Do wprowadzania adresu IP (wiele kropek i cyfr)
próbować
<EditText android:id="@+id/ipBox" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/ipAddrHint" android:inputType="numberDecimal|number" android:digits="0123456789." android:textSize="30sp" />
źródło