2016-08-01 13 views
5

ich zur Umsetzung einfache Logik versuche nur Zeichen zwischen a-z und A-Z programmatischAndroid nehmen nur Zeichen zwischen az und AZ

Eine einfache Lösung ist, zu akzeptieren:

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

In strings.xml:

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

Aber ich möchte das programmgesteuert implementieren

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

zuerst müssen Sie verwenden char ascii-Wert konvertieren, nachdem Sie Ihre Logik implementieren wird .. – comeback4you

+0

gibt es einen bestimmten Grund, warum Sie benötigen es programmatisch zu implementieren? – HendraWD

Antwort

11

Sie sollten 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

Danke, ok. Lassen Sie mich nach einer Verzögerung einige Minuten akzeptieren, was ist das mit 'addTextChangedListener' für die Implementierung dieser Lösung? –