Ik gebruik de bibliotheek FloatLabel(https://github.com/weddingparty/AndroidFloatLabel) om een kleine animatie toe te voegen wanneer de gebruiker iets begint te schrijven in een EditText Android.
Mijn probleem is dat het lettertype lijkt te zijn veranderd wanneer ik het wachtwoordtype toepas op mijn EditText. Ik wil graag hetzelfde lettertype behouden als normaal. (zie foto 1)
Maar als ik de volgende regel toevoeg om het wachtwoordtype toe te passen, lijkt het lettertype van de hint te zijn gewijzigd!
pass.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
Antwoord 1, autoriteit 100%
Het volgende kan het voor je oplossen.
pass.setTypeface(user.getTypeface());
In wezen geeft het alleen het Typeface
van uw gebruikersnaamveld door en geeft het door als het Typeface
voor uw wachtwoordveld.
Ik vond een uitleg hiervan in de Dialogs API Guide.
Tip:wanneer u standaard een EditText-element instelt om de
"textPassword"
invoertype, de lettertypefamilie is ingesteld op monospace, dus u
zou zijn lettertypefamilie moeten veranderen in"sans-serif"
zodat beide tekstvelden
gebruik een bijpassende letterstijl.
Met andere woorden, een reparatie die in XML kan worden gedaan, is als volgt:
<EditText
android:id="@+id/password"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:hint="@string/password"/>
Antwoord 2, autoriteit 4%
Om de een of andere reden hoefde ik de transformatiemethode niet in te stellen, dus dit kan een betere oplossing zijn.
In Mijn Activiteit:
EditText editText_password = findViewById(R.id.edittext);
editText_password.setTransformationMethod(new PasswordTransformationMethod());
Antwoord 3
u kunt android:hit en setHitColor gebruiken in uw activiteit, dit heeft geen invloed op de normale invoer
Antwoord 4
Stel het inputType in als “tekst” in de xml,
<EditText
android:id="@+id/edtPassword"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="text"/>
Maak vervolgens de EditText in de activiteit als
mEdtConfirmPassword = findViewById(R.id.edtPassword);
mEdtConfirmPassword.setTransformationMethod(new PasswordTransformationMethod());
Antwoord 5
Het kan laat zijn om deze vraag te beantwoorden, maar ik ben dit probleem tegengekomen. Dus dacht hier antwoord op te geven. Ik heb het opgelost door Implementing a CustomTextWatcher
.
Hier is het fragment
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);
}
}
}
Hier leest u hoe u het in uw toepassing kunt gebruiken
EditText pin = (EditText) findViewById(R.id.pin);
pin.addTextChangedListener(new CustomTextWatcher(pin));
Antwoord 6
Een andere oplossing is om het typeface
op te slaan voordat u het inputType
wijzigt en het daarna opnieuw toe te passen. Vreemd genoeg gebeurt dit niet bij het instellen van het inputType
in xml
maar bij het programmatisch instellen.
val typeface = editText.typeface
editText.inputType = inputType
editText.typeface = typeface