2012-01-20 7 views
0

Bonjour les gars.Edittext Numérique par code

J'essaie de définir EditText pour saisir uniquement des nombres et pointer (".") C'est tout. Im déjà using inputType .. mais il clavier numérique avec "+", "-" et "#" et sans point/période (".") exemple pour ce qui en ont besoin: 100.99 .. c'est tout. J'ai trouvé un peu de code:

<EditText android:text="100.99" 
android:id="@+id/EditText01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:numeric="integer|decimal" /> 

mais il est en xml ... je veux créer par code. Je veux dire aussi cette chaîne:

android:numeric="integer|decimal" 

S'il vous plaît, si quelqu'un sait comment définir ces paramètres par code .. me répondre

Cordialement, Peter.

+0

vouliez-vous dire, le texte d'édition doit accepter les valeurs réelles seulement? –

+0

seuls les nombres et le point (période ".") C'est tout .. pas d'entrée aux mots ou symboles comme "+", "-" ou autre sauf period (".") – Peter

+0

Je pense que vous devez créer un nouveau clavier pour votre exigences et vous devez le maintenir pour modifier le texte. Si vous ne savez pas comment le faire, demandez-moi. –

Répondre

4

Essayez d'utiliser:

mEditText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL); 

Edit:

La suggestion que j'ai donné ci-dessus était pris de Doc. mais comme vous l'avez dit, cela ne fonctionne pas correctement, je peux vous suggérer plus de choses.

Ajouter un TextWatcher à votre EditText comme ci-dessous, après avoir défini ci-dessus type d'entrée:

mEditText.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3){   

      if(arg0.length()!=0) 
      { 
       String s=arg0.toString(); 
       Character c=s.charAt(arg0.length()-1); 

       if(c=='/' || c=='\\' || c=='|' || c=='"' || c==':' || c==';' || c=='?' || c=='/' || c==',' || c=='<' || c=='>' || c=='!' || c=='@' || c=='#' || c=='$' || c=='%' || c=='^' || c=='&' || c=='*' || c=='(' || c==')' || c=='_' || c=='=' || c=='+' || c=='-') 
       {    
        if(arg0.length()!=1) 
        { 
         String s1=s.substring(0,arg0.length()-1); 
         mEditText.setText(s1); 
         mEditText.setSelection(s1.length());  
        } 
        else 
        { 
         mEditText.setText(""); 
        } 
       } 
      }  
    }    
    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) { 
    }    
    @Override 
    public void afterTextChanged(Editable arg0) { 
    } 
} 
+0

déjà essayé .. peut encore entrer + et - (plus et minus) :( – Peter

+0

Ensuite, juste utiliser décimal, ne pas inclure le numéro alors essayez ceci: mEditText.setInputType (InputType.TYPE_NUMBER_FLAG_DECIMAL); – Hiral

+0

s'il vous plaît voir mon edit! Qui a fonctionné pour moi.also vous pouvez supprimer la spécification du type d'entrée dans votre xml – Hiral

0

S'il vous plaît essayer,

// TYPE_CLASS_NUMBER: classe pour le texte numérique. Ceci affiche le clavier numérique/symboles.

editText.setInputType(InputType.TYPE_CLASS_NUMBER); 

// TYPE_CLASS_PHONE: Classe pour un numéro de téléphone. Ceci affiche le clavier du numéro de téléphone.

editText.setInputType(InputType.TYPE_CLASS_PHONE); 
+0

je peux entrer "+" et "-" .. im déjà essayé cela et il ne m'aide pas :( – Peter

+0

J'ai mis à jour le code, s'il vous plaît essayez – Lucifer

0

fait cela fonctionne:

editText.setInputType((InputType.TYPE_MASK_CLASS&InputType.TYPE_CLASS_NUMBER)| (InputType.TYPE_MASK_FLAGS & (InputType.TYPE_NUMBER_FLAG_SIGNED |InputType.TYPE_NUMBER_FLAG_DECIMAL))); 
Questions connexes