2011-01-17 15 views
8

È possibile impostare il carattere tipografico dell'elemento suggerimento della vista EditText senza modificare il carattere tipografico di EditText stesso? Grazie.Impostazione del carattere del suggerimento in TextEdit

+0

Possibile duplicato di [modifica carattere per suggerimento editText] (http: // stackoverflow.it/questions/13251990/change-font-for-edittext-hint) –

risposta

8

sembra che non v'è alcun modo per controllare carattere di suggerimento e carattere del testo a parte.

2

Hai controllato android:typeface?

Questo funziona bene sia per il suggerimento sia per il testo per EditText.

+0

sì, influenza sia il suggerimento che il testo. un modo semplice per cambiare solo un suggerimento? – Asahi

2

Non so se è necessario averli diversi o se si desidera impostare in modo specifico un carattere tipografico.

Se avete solo bisogno per lo stile il suggerimento diverso rispetto il testo, ecco come si può fare in Java su una base per-campo

  1. Avvolgere il testo di suggerimento nel tag di stile HTML
  2. Pass the marcato stringa a Html.fromHtml (String htmlString)
  3. Passa il risultato di fromHtml() a setHint();

    myField.setHint(Html.fromHtml("<i>" + hint + "</i>")); 
    
0

il modo migliore per gestire questo problema è quello di aggiungere un TextWatcher al vostro EditText e dinamicamente modificare il carattere tipografico quando non c'è nessun ingresso nel EditText

-3

editText.setTypeface(Typeface.SERIF);

+0

Ti dispiacerebbe spiegare la tua risposta? –

+0

editText.setTypeface (Typeface.SERIF); usalo per cambiare il tipo di font di edittext –

1

È possibile impostare suggerimento font by override typefacefont

public class CustomEditText extends EditText { 

private Context context; 
private AttributeSet attrs; 
private int defStyle; 

public CustomEditText(Context context) { 
    super(context); 
    this.context = context; 
    init(); 
} 

public CustomEditText(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.context = context; 
    this.attrs = attrs; 
    init(); 
} 

public CustomEditText(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    this.context = context; 
    this.attrs = attrs; 
    this.defStyle = defStyle; 
    init(); 
} 

private void init() { 
    Typeface font = Typeface.createFromAsset(getContext().getAssets(), "opensansbold.ttf"); 
    this.setTypeface(font); 
} 

@Override 
public void setTypeface(Typeface tf, int style) { 
    tf = Typeface.createFromAsset(getContext().getAssets(), "opensansbold.ttf"); 
    super.setTypeface(tf, style); 
} 
} 
0

Non devi fare niente Hing. Basta semplicemente impostare il tipo di carattere per l'EditText, e che cambierà automaticamente il tipo di carattere accenno pure.

Ecco il tipo di carattere personalizzato e su come impostarlo:

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/gobold_uplow.ttf"); 

Edittext mEmailEntry = (EditText) findViewById(R.id.entry_email); 
mEmailEntry.setTypeface(typeface); 
1

al fine di avere carattere specifico v'è una grande biblioteca here, è molto semplice, ma per avere un EditText con Android: InputType =" textPassword" si dovrebbe fare un po 'di più, ecco che è:

  1. rimuovere android: InputType = "textPassword" da XML
  2. applicare carattere utilizzando questo library
  3. imposta passwordtransformation nel codice:

    password.setInputType (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); password.setTransformationMethod (PasswordTransformationMethod.getInstance());

0
mEmailView.setTypeface(Typeface.createFromAsset(getAssets(), 
    getString(R.string.app_font))); 

((TextInputLayout) findViewById(R.id.tilEmail)).setTypeface(Typeface.createFromAsset(
    getAssets(), getString(R.string.app_font))); 
+0

Puoi aggiungere qualche spiegazione a questo codice? Inoltre, come è diverso da [la risposta di Shahid] (http://stackoverflow.com/a/38913148/4660897)? –

+1

è necessario impostare Typeface per TextInputLayout e EditText entrambi. non solo per EditText – Fahimi

0

Si dovrebbe creare CustomTypefaceSpan avere diversi tipi di carattere per il suggerimento e EditText.

Typeface hintTypeface = Typeface.createFromAsset(getAssets(), "AguafinaScript-Regular.ttf"); 
TypefaceSpan typefaceSpan = new CustomTypefaceSpan(hintTypeface); 
SpannableString spannableString = new SpannableString("some hint text"); 
spannableString.setSpan(typefaceSpan, 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); 
editText.setHint(spannableString); 


public class CustomTypefaceSpan extends TypefaceSpan 
{ 
    private final Typeface mNewType; 

    public CustomTypefaceSpan(Typeface type) 
    { 
     super(""); 
     mNewType = type; 
    } 

    public CustomTypefaceSpan(String family, Typeface type) 
    { 
     super(family); 
     mNewType = type; 
    } 

    @Override 
    public void updateDrawState(TextPaint ds) 
    { 
     applyCustomTypeFace(ds, mNewType); 
    } 

    @Override 
    public void updateMeasureState(TextPaint paint) 
    { 
     applyCustomTypeFace(paint, mNewType); 
    } 

    private static void applyCustomTypeFace(Paint paint, Typeface tf) 
    { 
     int oldStyle; 
     Typeface old = paint.getTypeface(); 
     if (old == null) 
     { 
      oldStyle = 0; 
     } 
     else 
     { 
      oldStyle = old.getStyle(); 
     } 

     int fake = oldStyle & ~tf.getStyle(); 
     if ((fake & Typeface.BOLD) != 0) 
     { 
      paint.setFakeBoldText(true); 
     } 

     if ((fake & Typeface.ITALIC) != 0) 
     { 
      paint.setTextSkewX(-0.25f); 
     } 

     paint.setTypeface(tf); 
    } 
} 
Problemi correlati