2009-11-03 8 views

Répondre

0

Il existe un constructeur qui vous permet de spécifier le style du champ. Vous pouvez alors OU ensemble les styles que vous voulez, comme FILTER_UPPERCASE | FILTER_LOWERCASE | FILTER_NUMERIC.

Vous pouvez également appeler setFilter et créer votre propre sous-classe de TextFilter, qui vous permet de spécifier le comportement exact souhaité en écrasant les méthodes de conversion et de validation. Convertir vous permet de forcer certaines choses comme automatiquement faire en majuscules tout texte, etc. Valider vous permet de bloquer certaines choses d'être entrées, par ex. caractères spéciaux. Consultez l'API pour plus d'informations.

+0

Salut Dave i essayé « FILTER_UPPERCASE | FILTER_LOWERCASE | FILTER_NUMERIC » celui-ci, mais je considère que le premier filtre n'ex.in le style ci-dessus ur majuscules donné, minuscules et numeric.But le filtre accepte uniquement en majuscule uniquement. – Kumar

3

Peut-être qu'il n'est pas possible de les combiner comme ça alors, je ne l'ai pas essayé. Chaque fois que j'ai utilisé des filtres dans mon code, je l'ai toujours fait la deuxième façon dont j'ai parlé plus haut. C'est un peu plus compliqué mais cela vous donne beaucoup plus de contrôle sur ce que le champ peut et ne peut pas accepter. Consultez la documentation de l'API sur la classe TextFilter. Comme je l'ai dit plus haut, il suffirait de mettre en œuvre les méthodes de conversion et de validation. Je pense que dans votre cas, vous n'auriez rien à convertir. Mais dans la méthode de validation, il suffit de vérifier que le caractère est compris entre a-z A-Z ou 0-9. Si c'est vrai, sinon retourner false. Cela empêchera tous les caractères indésirables d'apparaître sur le terrain.

6

-je utiliser ces méthodes: TextFilter#get et BasicEditField#setFilter

mEdit = new EditField(); 
mEdit.setFilter(TextFilter.get(TextFilter.NUMERIC)); 

ou

// Numeric filter that also allows minus sign. 
mEdit.setFilter(TextFilter.get(TextFilter.INTEGER)); 

Je pense que la création de votre propre filtre en remplaçant Textfilter peut résoudre la tâche de filtrage plus difficile.

3

Avec un BasicEditField, ceci n'est pas facilement implémentable; Cependant, la bonne solution changerait BasicEditField avec AutoTextEditField. Lors de la création de AutoTextEditField, utilisez le constructeur dans lequel vous pouvez passer des paramètres. Cela devrait le faire pour vous.

new AutoTextEditField("My label:", "initial value", 1024, 50, 
         TextFilter.LOWERCASE | TextFilter.NUMERIC); 
+0

-1: Ces informations sur AutoTextEditField ne sont pas pertinentes à la question initiale sur BasicEditField. –

+0

Il est facilement compréhensible, qu'avec BasicEditField ceci n'est pas facilement (ou pas du tout) implémentable; Cependant, la bonne solution changerait BasicEditField avec AutoTextEditField. Par conséquent, le champ différent utilisé. – Hrvoje

+0

Eh bien, je ne peux pas changer le vote sauf si vous modifiez votre réponse - règle de SO. –

1

mEdit.setFilter (TextFilter.get (TextFilter.NUMERIC)); fonctionne bien, aussi, je pense, il ne prend pas le signe moins, comme lors du test 'm pas en mesure d'insérer "-" signe moins dans le domaine.

-1

Kumar J'ai aussi fait face à la même question, a utilisé le code ci-dessous pour le fixer -

Le script ci-dessous permet Majuscules, Minuscules des valeurs numériques.

setFilter(new TextFilter() { 
     public boolean validate(char c) { 
      return (Character.isDigit(c) || Character.isLowerCase(c) || Character.isUpperCase(c)); 
     } 
     public char convert(char c, int status) { 
      return c; 
     }} 
+0

setFilter ne serait pas approprié à cet endroit. – Hrvoje

Questions connexes