2015-12-14 16 views
5

ich Maskierung hinzufügen möchten .. wie 00000-0000000-0Android Text bearbeiten Masking

etusercnic.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      try { 
       String str = s.toString(); 
       if (s.length() == 5 || s.length() == 13) { 
        str += "-"; 
        etusercnic.setText(str); 
        etusercnic.setSelection(str.length()); 
       } 
      } catch (Exception ignored) { 
      } 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
     } 
    }); 

Es funktioniert perfekt, wenn das erste Mal, dass ich den Wert eingegeben, aber wenn ich eine beliebige Ziffer entfernen sie gesetzt - Zeichen . so was kann ich tun ..

+0

Fahad auf [akzeptieren Antworten] (http://stackoverflow.com/help/someone-answers) auf Stapel über Fluss lernen. Wenn es für Sie funktionierte, wenn es nicht funktionierte, dann kommentieren Sie das Problem, mit dem Sie konfrontiert sind. –

Antwort

3

Ich bin sicher, dass Sie es für CNIC sind Maskierung: D

Sowieso hier ist meine Version der Maskierung, es funktioniert perfekt:

 etusercnic.setRawInputType(InputType.TYPE_CLASS_NUMBER); 
     etusercnic.addTextChangedListener(new TextWatcher() { 
     int len = 0; 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      // TODO Auto-generated method stub 
      String val = etusercnic.getText().toString(); 
      if((val.length()==5 && len <val.length()) || (val.length()==13 && len<val.length())){ 
       etusercnic.append("-"); 
      } 


     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      String str = etusercnic.getText().toString(); 
      len = str.length(); 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 

Die xml von Ihr Edittext sollte etwas ähnliches sein:

<EditText 
    android:id="@+id/nic_field" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="@string/signup_cnic_hint" 
    android:singleLine="true" 
    android:inputType="date" 
    android:maxLength="15" 
    android:textColor="#000000" 
    android:textColorHint="#808080" 
    android:textSize="15sp" 
    /> 
+0

etusercnic.append ("-"); funktioniert nicht. Ergebnis ist - 000000000000 –

+0

@fahadkhalid können Sie meine Antwort akzeptieren plz –

+0

Vielen Dank Ihre Hilfe .. Sharp Edge –

-1

Nach etwas Hilfe .. fand ich einen Weg. Richtige Antwort ... Perfektes Arbeiten. :)

etusercnic.addTextChangedListener(new TextWatcher() { 
     int len = 0; 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      String str = etusercnic.getText().toString(); 
      len = str.length(); 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      try { 
       String str = s.toString(); 

       String val = etusercnic.getText().toString(); 
       if ((val.length() == 5 && len < val.length()) || (val.length() == 13 && len < val.length())) { 
        str += "-"; 
        etusercnic.setText(str); 
        etusercnic.setSelection(str.length()); 
       } 
      } catch (Exception ignored) { 
      } 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
     } 
    }); 
0

Viel Glück mit Ihrem Projekt! Der einfachste Weg, wie ich eine Maske für EditText in Android-Programmen in Android Studio verwenden kann, ist die Verwendung der MaskedEditText-Bibliothek (GitHub link). Es ist eine Art von benutzerdefinierter EditText mit Watcher, die Sie einen Hinweis mit unterschiedlicher Farbe festlegen kann (wenn Sie wenn Sie möchten, auch verfügbar sein wird, wenn der Benutzer bereits begonnen zu geben) Maske, und es ist sehr einfach :-)

zu verwenden Es ist sehr einfach in Ihrem Fall:

compile 'ru.egslava:MaskedEditText:1.0.5' 

<br.com.sapereaude.maskedEditText.MaskedEditText 
    android:id="@+id/phone_input" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="phone" 
    android:typeface="monospace" 
    mask:allowed_chars="1234567890" 
    mask:mask="#####-#######-#" 
    android:hint="0000000000000" 
    app:keep_hint="true" 
    /> 

Und das ist! Viel Glück!

enter image description here

Verwandte Themen