2016-08-01 73 views
5
字符之間

我想實現簡單的邏輯來a-zA-Z之間只接受文字編程的Android只接受az和AZ

一個簡單的解決方案是:

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

在strings.xml中:

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

但我想以編程方式實現該功能

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

首先你需要字符轉換爲ASCII值後,你的邏輯將實行.. – comeback4you

+0

有你爲什麼需要以編程方式實現它的任何具體的原因? – HendraWD

回答

11

您應該使用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

謝謝,好的。讓我延遲一段時間後,我接受,與'addTextChangedListener'實施此解決方案有什麼不同? –

相關問題