Comment définir plusieurs types d'entrée dans un EditText sur Android?
Je suis en train de créer un EditText
avec la mise en majuscules automatique et l'auto-correction de la mise en œuvre. J'ai manuellement de comprendre comment ajouter InputFilter
s pour permettre la mise en majuscules automatique, bien que cela ne fonctionne que après la première lettre est tapée, et j'ai pas eu de chance avec auto-correction (j'ai essayé de créer un InputFilter utilisé AutoText
mais je ne suis pas sûr de savoir comment tout cela fonctionne). Idéalement, je pouvais EditText.setInputType(...) qui se charge de tout, mais jusqu'à présent cela n'a pas fonctionné. Est-il un moyen pour y parvenir? Ma tentative a échoué, est présenté ci-dessous (je viens d'obtenir l'entrée normale).
EditText mEditText = new EditText(this);
int inputType = InputType.TYPE_CLASS_TEXT;
if (auto_capitalize) {
inputType = mEditText.getInputType() | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS;
}
if (auto_correct) {
inputType = mEditText.getInputType() | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT;
}
mEditText.setInputType(inputType);
Veuillez noter, je suis seulement intéressé dans les solutions pour la création de ce EditText
dans le code - pas via XML.
Modifier
J'ai trouvé le son de la nouvelle documentation décrivant TextKeyListenercependant, après avoir essayé d'utiliser cette:
mEditText.setKeyListener(new TextKeyListener(TextKeyListener.Capitalize.CHARACTERS, true));
et à l'aide de @farble1670 l'idée d'utiliser setRawInputType
afin de ne pas affecter la KeyListener
s, il n'y a toujours pas de changement pour le texte.
source d'informationauteur Phil
Vous devez vous connecter pour publier un commentaire.
Via un fichier XML, il serait de configuration comme si.
Vous suffit d'ajouter un tuyau (
|
) entre les variables. Je vois que vous étiez faire qu'à travers le code, mais je viens de jeter ce qui existe pour référence.J'espère que vous avez trouvé une réponse à la question. La réponse pourrait aider ceux ceux qui viennent du fil plus tard. Ainsi, vous pouvez mettre plusieurs balises de la même manière que vous le faites en XML à l'aide d'un
|
(pipe).Quelque chose comme:
Aussi, selon votre situation vous pouvez utiliser
setInputType
ousetRawInputype
.oui, il me semble que cela devrait fonctionner. cependant, en regardant les docs,
de sorte qu'il ressemble en général, vous ne pouvez pas vous attendre à définir deux valeurs.
aussi, si vous regardez android:setInputType, il dit il correspond à la setRawInputType() la méthode, pas setInputType(). vous pourriez essayer d'appeler setRawInputType() à la place de setInputType().