2016-08-01 16 views
5

Tôi cố gắng để thực hiện logic đơn giản chỉ chấp nhận ký tự giữa a-zA-Z lập trìnhAndroid chỉ chấp nhận ký tự giữa az và AZ

Một giải pháp đơn giản là:

<EditText 
    android:id="@+id/LanguageText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="text" 
    android:digits="@string/app_lan" /> 

Trong strings.xml:

<string name="app_lan">abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ</string> 

Nhưng tôi muốn triển khai theo cách lập trình

username.addTextChangedListener(new TextWatcher() { 
    public void afterTextChanged(Editable s) { 
     if (s.toString().length() > 0) { 
      /* if char is not between a-z and A-Z then return*/ 
      if ((int) s.toString().charAt(0) < 65 && (int) s.toString().charAt(0) > 90 || (int) s.toString().charAt(0) < 97 && (int) s.toString().charAt(0) > 122) { 
       return; 
      }else{ 
       /* Accept character */ 
      } 
     } 
    } 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
    } 
}); 
+0

đầu tiên bạn cần phải chuyển đổi char để giá trị ascii sau logic của bạn sẽ thực hiện .. – comeback4you

+0

là có bất kỳ lý do cụ thể tại sao bạn cần phải thực hiện nó lập trình? – HendraWD

Trả lời

11

Bạn nên sử dụng InputFilters

edittext.setFilters(new InputFilter[] { 
    new InputFilter() { 
     public CharSequence filter(CharSequence src, int start, 
       int end, Spanned dst, int dstart, int dend) { 
      if(src.toString().matches("[a-zA-Z ]+")){ 
       return src; 
      } 
      return ""; 
     } 
    } 
}); 
+0

Cảm ơn, ok. cho tôi để sau khi trì hoãn một số phút tôi chấp nhận rằng, whats khác nhau mà với 'addTextChangedListener' để thực hiện giải pháp này? –

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