93 votes

Définir les chiffres EditText par programme

J'essaie essentiellement de définir la valeur numérique d'un EditText par programme. Jusqu'à présent j'ai:

 weightInput.setInputType(InputType.TYPE_CLASS_PHONE);
weightInput.setKeyListener(DigitsKeyListener.getInstance());
 

Ce qui est bien, mais je veux aussi pouvoir inclure une décimale (.). Des idées?

217voto

Whiler Points 4198

Essaye ça:

 <EditText
    android:inputType="number"
    android:digits="0123456789."
/>
 

De code:

 weightInput.setKeyListener(DigitsKeyListener.getInstance("0123456789."));
 

Mais, cela permet à l'utilisateur d'inclure plusieurs "." Voir la réponse de Muffinbubble pour des nombres réels.

34voto

JoeyRA Points 60

Essaye ça:

 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) 
 

Renvoie un DigitsKeyListener qui accepte les chiffres de 0 à 9, plus le signe moins (uniquement au début) et / ou le point décimal (un seul par champ), le cas échéant.

Cela résout le problème des nombreux '.' dans EditText

21voto

Ricky Points 3466

Utilisez InputType.TYPE_NUMBER_FLAG_DECIMAL .

Voir aussi: Types d'entrée .

4voto

NAGESH M H Points 21

Pour la saisie d'adresse IP (points et chiffres multiples)

essayer

 <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" />
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X