2017-05-18 8 views
0
 edtTxt.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void afterTextChanged(Editable s) { 
       if(s.length() != 0 && s.length() == 2){ 
        String str = s.toString(); 
        str.replaceAll("..(?!$)", "$0:"); 
        edtTxt.setText(str); 
        } 
      } 

      @Override  
      public void beforeTextChanged(CharSequence s, int start, 
      int count, int after) { 
      } 

      @Override  
      public void onTextChanged(CharSequence s, int start, 
      int before, int count) { 

      } 
      }); 

Je dois afficher ":" après le 2ème chiffre qui est par exemple 10:25, la longueur maximale est de 5 chiffres, il est edittext. Si je commençais à taper dans l'edittext 10 après que ":" devrait être inséré, alors 10:25 devrait être affiché dans le edittext. J'ai essayé avec la logique ci-dessus ne fonctionne pas. Quelqu'un peut-il m'aider. Merci d'avanceAprès avoir entré 2 chiffres insérer un deux-points (:) android

Répondre

0

Tout d'abord, vous ignorez le résultat de str.replaceAll(). La méthode renvoie un String. La condition if peut être simplifiée à s.length() == 2.

Et la regex que vous utilisez ne fonctionne pas.

Cela va ajouter deux points dans le EditText après avoir saisi 2 caractères

if (s.length() == 2) { 
    edtTxt.setText(s.toString() + ":"); 
} 
+0

il ne fonctionne pas, il ajoute comme 2510: mais j'ai besoin 10h25 .. –

1

Après replaceAll vous devez attribuer la valeur à même variable. Son travail bien ..

public void afterTextChanged(Editable s) { 
    if(s.length() != 0 && s.length() == 3){ 
     String str = s.toString(); 
     str = str.replaceAll("..(?!$)", "$0:"); 
     edtTxt.setText(str); 
     edtTxt.setSelection(edtTxt.getText().length()); //cursor at last position 
    } 
} 
+0

ci-dessus logique ne fonctionne pas .. –

+0

vous devez changer la longueur en 3 ... cela va fonctionner. vérifiez ma mise à jour réponse .. si vous tapez 123, il donnera 12: 3 – sasikumar

+0

ok. mais le curseur pointe vers avant le premier caractère .. pourquoi? –