J’utilise la bibliothèque FloatLabel ( https://github.com/weddingparty/AndroidFloatLabel ) pour append un peu d’animation lorsque l’utilisateur commence à écrire quelque chose dans Android EditText.
Mon problème est que la police de caractères semble être modifiée lorsque j’applique le type de mot de passe à mon EditText. Je voudrais garder la même police de caractères que d’habitude. (voir photo 1)
Mais lorsque j’ajoute la ligne suivante pour appliquer le type de mot de passe, le caractère de l’indice semble être modifié!
pass.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
Ce qui suit pourrait le résoudre pour vous.
pass.setTypeface(user.getTypeface());
Essentiellement, il passe simplement le champ Typeface
de Typeface
de votre nom d’utilisateur et le passe comme Typeface
de Typeface
pour votre champ de mot de passe.
J’ai trouvé une explication à ce sujet dans le Guide de l’API Dialogs .
Conseil: Par défaut, lorsque vous définissez un élément EditText pour utiliser le type de saisie
"textPassword"
, la famille de fonts est définie sur monospace. Vous devez donc remplacer sa famille de fonts par"sans-serif"
afin que les deux champs de texte utilisent une police correspondante. style.
En d’autres termes, un correctif qui peut être fait en XML serait comme suit:
Pour une raison quelconque, je n’ai pas eu à définir la méthode de transformation, ce qui peut constituer une meilleure solution. Dans MyActivity:
EditText editText_password = findViewById(R.id.edittext); editText_password.setTransformationMethod(new PasswordTransformationMethod());
vous pouvez utiliser Android: hit et setHitColor dans votre activité, cela n’affectera pas l’entrée normale
Il est peut-être tard pour répondre à cette question mais je suis tombé sur ce problème. Alors pensé à répondre à cela. Je l’ai résolu en Implementing a CustomTextWatcher
.
Voici l’extrait
private class CustomTextWatcher implements TextWatcher { private EditText mEditText; public CustomTextWatcher(EditText e) { mEditText = e; mEditText.setTypeface(Typeface.DEFAULT); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { mEditText.setTypeface(Typeface.DEFAULT); } public void onTextChanged(CharSequence s, int start, int before, int count) { mEditText.setTypeface(Typeface.MONOSPACE); } public void afterTextChanged(Editable s) { if(s.length() <= 0){ mEditText.setTypeface(Typeface.DEFAULT); } else { mEditText.setTypeface(Typeface.MONOSPACE); } } }
Voici comment vous pouvez l'utiliser dans votre application
EditText pin = (EditText) findViewById(R.id.pin); pin.addTextChangedListener(new CustomTextWatcher(pin));