2010-08-23 6 views

Répondre

1

D'abord, quel est votre objectif? Pourquoi voulez-vous restreindre les majuscules? Tu ne peux pas prendre soin d'eux sur la validation des entrées utilisateur et utiliser toLowerCase()

Si vous avez besoin de restreindre les lettres majuscules, la seule façon que je peux penser est prépondérant onTextChanged(CharSequence text, int start, int before, int after) et d'essayer de faire ce que vous vouloir à l'intérieur. Je ne l'ai pas testé, mais cela pourrait fonctionner.

Mise à jour: radek mentionné InputFilter. Ces solutions semblent plus propres que les miennes, mais je ne les ai jamais utilisées. Les InputFilters peuvent être attachés aux éditables pour limiter les changements qui peuvent leur être apportés.

+0

Il n'y a pas inputFilter ou InputType (http://developer.android.com/reference/android/text/InputType.html) pour ce qu'il essaie de faire. – Macarse

+0

Thats la bonne idée: D – UMAR

+0

Merci d'avoir choisi ma réponse, mais Radek-k est le meilleur. Quoi qu'il en soit, nous avons tous appris quelque chose aujourd'hui ^^ – Maragues

4

Dans le code source:

InputFilter smallFilter = new InputFilter() { 

    @Override 
    public CharSequence filter(CharSequence source, int start, int end, 
     Spanned dest, int dstart, int dend) { 
    for (int i = start; i < end; i++) { 
     if (Character.isUpperCase(source.charAt(i))) { 
     char[] v = new char[end - start]; 
     TextUtils.getChars(source, start, end, v, 0); 
     String s = new String(v).toLowerCase(); 

     if (source instanceof Spanned) { 
      SpannableString sp = new SpannableString(s); 
      TextUtils 
       .copySpansFrom((Spanned) source, start, end, null, sp, 0); 
      return sp; 
     } else { 
      return s; 
     } 
     } 
    } 
    return null; 
    } 
}; 

EditText vText = ...; 
vText.setFilters(new InputFilter[]{smallFilter}); 

Il est basé sur la source Android de: InputFilter.AllCaps. Testé et fonctionne.

+2

Je pense qu'il veut l'inverse: pas de majuscules – Maragues

+0

les deux ne fonctionne pas. ci-dessus règle automatiquement le clavier à chaque fois si vous l'éteignez, il vous permet d'entrer 1 petit caractère. et en dessous d'une erreur donnant InputFilter.AllCaps ne peut pas être résolu. – UMAR

+0

ajouter "import android.text.InputFilter;" après la déclaration du paquet. – plugmind

Questions connexes