J'ai un tableau de editTexts que je fais comme ceci:
inputs[i] = new EditText(this);
inputs[i].setWidth(376);
inputs[i].setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
tFields.addView(inputs[i]);
Je veux que chaque personnage soit capitalisé. À l'heure actuelle, la première lettre du premier mot est en minuscule, puis tous les caractères suivants sont en majuscule. Je peux prendre ce que les utilisateurs saisissent une fois terminé et le convertir en majuscule, mais ce n'est pas vraiment ce que je vais faire. Existe-t-il un moyen de faire en sorte que ces champs se comportent comme je le souhaite?
Vous devez aussi dire que cela provient du texte "class":
inputs[i] = new EditText(this);
inputs[i].setWidth(376);
inputs[i].setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
tFields.addView(inputs[i]);
Le type input est un masque bit . Vous pouvez combiner les drapeaux en mettant le | (pipe) caractère au milieu, qui représente la fonction logique OR, même si, utilisé dans un masque de bits comme celui-ci, cela signifie "cet indicateur ET cet autre indicateur".
(Cette réponse est la même que celle de Robin, mais sans les "nombres magiques", une des pires choses que vous puissiez mettre dans votre code. L'API Android possède des constantes, utilisez-les plutôt que de copier les valeurs et risquer de casser le code.)
Cela rendra tous les caractères majuscules lors de l'écriture.
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
Réponse originale ici .
Utilisez simplement la méthode String.toUpperCase()
.
exemple :
String str = "blablabla";
editText.setText(str.toUpperCase()); // it will give : BLABLABLA
MODIFIER :
ajoute cet attribut à votre balise EditText
dans votre xv layout
:
Android:textAllCaps="true"
OU:
Si vous voulez que les types d'utilisateurs soient en majuscules, vous pouvez implémenter une TextWatcher
et utiliser la EditText
addTextChangedListener
pour l'ajouter, une méthode sur la onTextChange
prend l'entrée utilisateur et la remplace par le même texte en majuscule.
editText.addTextChangedListener(upperCaseTextWatcher);
final TextWatcher upperCaseTextWatcher = new TextWatcher() {
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
editText.setText(editText.getText().toString().toUpperCase());
editText.setSelection(editText.getText().toString().length());
}
public void afterTextChanged(Editable editable) {
}
};
Vous pouvez essayer ceci:
Android:inputType="textCapCharacters"
Cela a fonctionné pour moi. =)
Je sais que cette question est un peu ancienne, mais voici comment le faire de différentes manières:
Appliquer UpperCase en XML
Ajoutez ce qui suit au XML EditText:
Android:textAllCaps="true"
Appliquer UpperCase en tant que filtre unique à un EditText en Java
Ici, nous définissons le filtre UpperCase comme seul filtre de EditText. Notez que cette méthode supprime tous les filtres ajoutés précédemment.
editText.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
Ajout de UpperCase aux filtres existants d'un EditText en Java
Pour conserver les filtres déjà appliqués de EditText, par exemple inputType, maxLength, etc., vous devez récupérer les filtres appliqués, ajouter le filtre UpperCase à ces filtres et les rétablir dans EditText. Voici un exemple comment:
InputFilter[] editFilters = editText.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = new InputFilter.AllCaps();
editText.setFilters(newFilters);
Cela fonctionnerait
inputs[i] = new EditText(this);
inputs[i].setWidth(376);
inputs[i].setInputType(0x00001001);
tFields.addView(inputs[i]);
0x00001001 correspond à "constante textCapCharacters
.
À compter d'aujourd'hui, ses
Android:inputType="textCapCharacters"
essayez d’utiliser cette seule ligne de code dans votre fichier XML:
Android:capitalize="sentences"
Pour une raison quelconque, l'ajout du code XML ne fonctionnait pas sur mon appareil.
J'ai trouvé qu'un filtre de texte fonctionne en majuscule, comme ceci
EditText editText = (EditText) findViewById(R.id.editTextId);
InputFilter toUpperCaseFilter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = start; i < end; i++) {
Character character = source.charAt(i);
character = Character.toUpperCase(character); // THIS IS UPPER CASING
stringBuilder.append(character);
}
return stringBuilder.toString();
}
};
editText.setFilters(new InputFilter[] { toUpperCaseFilter });