2014-06-09 18 views
42

Io uso la libreria FloatLabel (https://github.com/weddingparty/AndroidFloatLabel) per aggiungere una piccola animazione quando l'utente inizia a scrivere qualcosa in un EditText Android.Android: il carattere tipografico viene modificato quando si applica la password Tipo su EditText

Il mio problema è che il carattere tipografico sembra essere cambiato quando applico il tipo di password al mio EditText. Vorrei mantenere lo stesso carattere tipografico normale. (Vedi figura 1)

enter image description here

Ma quando aggiungo la seguente riga di applicare tipo di password, il carattere di suggerimento sembra essere cambiato!

pass.getEditText().setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 

enter image description here

risposta

119

Il seguente potrebbe risolvere per voi.

pass.setTypeface(user.getTypeface()); 

Essenzialmente appena passa la Typeface del campo nome utente e lo passa come il Typeface per il campo password.


Ho trovato una spiegazione di ciò nel Dialogs API Guide.

Suggerimento: Per impostazione predefinita, quando si imposta un elemento EditText di utilizzare il tipo "textPassword" di ingresso, la famiglia di font è impostato a spaziatura fissa, in modo da dovrebbe cambiare la sua famiglia di font per "sans-serif" in modo che entrambi i campi di testo utilizza uno stile di carattere corrispondente.

In altri termini, una correzione che può essere fatto in XML sarà il seguente:

<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"/> 
+0

Risolve il mio problema! Grazie – wawanopoulos

+1

'fontFamily' viene introdotto in api livello 16! cosa per 2.2? –

+0

Questa è esattamente la soluzione. Senza dover impostare cosa nel codice con setTypeface() e setTransformationMethod(), che non funzionano nemmeno completamente perché le lettere successive digitate sono nascoste e non mostrate – 1mike12

0

è possibile utilizzare Android: colpo e setHitColor nella vostra attività, non influenzerà l'ingresso normale

0

Potrebbe essere tardi per rispondere a questa domanda, ma mi sono imbattuto in questo problema. Così pensato di rispondere a questo. L'ho risolto con Implementing a CustomTextWatcher.

Ecco il frammento di

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); 
     } 


    } 
} 

Ecco come si può utilizzare nella propria applicazione

EditText pin = (EditText) findViewById(R.id.pin); 
pin.addTextChangedListener(new CustomTextWatcher(pin)); 
2

per qualche motivo non ho avuto bisogno di impostare il metodo di trasformazione, quindi questo potrebbe essere una soluzione migliore In MyActivity:

EditText editText_password = findViewById(R.id.edittext); 
    editText_password.setTransformationMethod(new PasswordTransformationMethod()); 
Problemi correlati