2015-12-14 15 views
5

tôi muốn thêm vào mặt nạ .. như 00000-0000000-0Android Chỉnh sửa văn bản 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) { 
     } 
    }); 

Nó hoạt động một cách hoàn hảo, khi lần đầu tiên tôi bước vào giá trị, nhưng khi tôi loại bỏ bất kỳ chữ số nó đặt - dấu . vì vậy những gì tôi có thể làm ..

+0

Fahad học cách [chấp nhận câu trả lời] (http://stackoverflow.com/help/someone-answers) trên ngăn xếp trên dòng chảy. Nếu nó làm việc cho bạn, nếu nó không hoạt động thì hãy bình luận với vấn đề bạn đang gặp phải. –

Trả lời

3

tôi chắc chắn rằng bạn đang che nó cho CNIC: D

Anyways đây là phiên bản của tôi về mặt nạ, nó hoạt động hoàn hảo:

 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 

     } 
    }); 

Các xml của Edittext của bạn phải giống như thế này:

<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 ("-"); không làm việc. Kết quả là - 000000000000 –

+0

@fahadkhalid bạn có thể chấp nhận câu trả lời của tôi plz –

+0

Cảm ơn sự giúp đỡ của bạn .. Sharp Edge –

-1

Sau khi được trợ giúp .. tôi đã tìm được cách. Câu trả lời đúng ... Làm việc hoàn hảo. :)

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

Chúc bạn may mắn với dự án của mình! Cách dễ nhất tôi biết để sử dụng mặt nạ trên EditText trong các chương trình Android của bạn trong Android Studio là sử dụng thư viện MaskedEditText (GitHub link). Đó là một loại EditText tùy chỉnh có Trình xem cho phép bạn đặt gợi ý với màu khác (nếu bạn muốn nếu có sẵn ngay cả khi người dùng đã bắt đầu nhập), mặt nạ và rất dễ sử dụng :-)

Rất dễ dàng trong trường hợp của bạn:

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

Và đó là! Chúc may mắn!

enter image description here

Các vấn đề liên quan