È possibile modificare il carattere per il suggerimento visualizzato nel campo EditText
? Voglio impostare il carattere nel xml stesso.cambia carattere per editText hint
risposta
Questa è una risposta sbagliata alla domanda. Ho provato a cancellare ma non posso escludere i moderatori. Ignora gentilmente la risposta o sentiti libero di aggiornare la risposta. Questa risposta è fuorviante. Scusate :).
editText.setTypeface(Typeface.SERIF);
È possibile modificare il carattere di EditText
proprio come TextView
. Ma non è possibile modificare il carattere tipografico di hint
.
Sei sicuro? Mio caro, questo è per il testo di input, non per il testo di suggerimento. –
questo è per l'intero EditText e non solo per il suggerimento – thepoosh
In realtà, l'impostazione sia dello stesso carattere va bene per me. Ma sto usando un nuovo font che ho scaricato dalla rete e non so come creare un nuovo carattere tipografico per quel font – Ankush
La sua non è possibile in XML -
Testo e suggerimento può avere solo lo stesso tipo di carattere in XML.
non ho scoprire un modo utile per cambiare il font suggerimento nel XML.But è possibile ottenere in questo modo:
mEt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.length()== 0) {
//mEt.setTypeFace(normalFont);
}else{
// mEt.setTypeFace(hintFont);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
Soluzione semplice, come dovrebbe essere – Darius
si può cambiare con uno SpannableString e TypefaceSpan personalizzato.
In primo luogo, creare una classe personalizzata TypefaceSpan:
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);
}
}
Poi basta impostare la TypefaceSpan ad uno SpannableString:
TypefaceSpan typefaceSpan = new CustomTypefaceSpan(typeface);
SpannableString spannableString = new SpannableString(hintText);
spannableString.setSpan(typefaceSpan, 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
E infine è sufficiente impostare il suggerimento del vostro EditText:
mEditText.setHint(spannableString);
Questa è una risposta corretta per me, grazie a @francisco_ssb. Funziona perfettamente. –
C'è un modo molto semplice per farlo. Ho appena fatto nella mia app e ha funzionato. La chiave è impostata come Facetype di TextInputLayout insieme a EditText.
mEmailView.setTypeface(Typeface.createFromAsset(getAssets(), getString(R.string.app_font)));
((TextInputLayout) findViewById(R.id.tilEmail)).setTypeface(Typeface.createFromAsset(getAssets(), getString(R.string.app_font)));
funziona come un fascino. – JCasso
Posso cambiare il tipo di suggerimento utilizzando questo library.
Dopo la compilazione della biblioteca è necessario creare una classe di applicazioni e la definizione della classe seguente comando:
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("font.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
Dopo ogni attività che si desidera ignorarlo con il seguente comando:
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
Dopo la compilazione della biblioteca è necessario creare una classe di applicazioni e la definizione della classe seguente comando: CalligraphyConfig.initDefault (nuova CalligraphyConfig.Builder() .setDefaultFontPath ("font.ttf") .setFontAttrId (R.attr.fontPath) .build() ); Dopo ogni attività che si desidera ignorarlo con il seguente comando: @Override protetta attachBaseContext void (Context newBase) { super.attachBaseContext (CalligraphyContextWrapper.wrap (newBase)); } –
@ johnny5, questa risposta mi ha aiutato poiché stavo usando la libreria Calligraphy a cui questa risposta si riferisce. HOSHYAR Ahmadpour ha anche spiegato la risposta. Grazie per la risposta HOSHYAR Ahmadpour. – Sakiboy
@Sakiboy si, va bene, ero nella coda delle recensioni assicurando che le persone future sarebbero state in grado di usare questa risposta, l'ho svalutato dopo aver corretto la sua risposta –
@ francisco_ssb di la risposta è corretta Tuttavia, fornirò una soluzione alternativa che aiuta a cambiare non solo il carattere di un suggerimento, ma anche le sue dimensioni e il suo stile. Spero che questa soluzione ti sia d'aiuto.
1) Creazione di un oggetto personalizzato Hint
:
import android.graphics.Typeface;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.MetricAffectingSpan;
public class CustomHint extends SpannableString
{
public CustomHint(final CharSequence source, final int style)
{
this(null, source, style, null);
}
public CustomHint(final CharSequence source, final Float size)
{
this(null, source, size);
}
public CustomHint(final CharSequence source, final int style, final Float size)
{
this(null, source, style, size);
}
public CustomHint(final Typeface typeface, final CharSequence source, final int style)
{
this(typeface, source, style, null);
}
public CustomHint(final Typeface typeface, final CharSequence source, final Float size)
{
this(typeface, source, null, size);
}
public CustomHint(final Typeface typeface, final CharSequence source, final Integer style, final Float size)
{
super(source);
MetricAffectingSpan typefaceSpan = new CustomMetricAffectingSpan(typeface, style, size);
setSpan(typefaceSpan, 0, source.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
}
2) Creare personalizzato MetricAffectingSpan
oggetto:
import android.graphics.Typeface;
import android.text.TextPaint;
import android.text.style.MetricAffectingSpan;
public class CustomMetricAffectingSpan extends MetricAffectingSpan
{
private final Typeface _typeface;
private final Float _newSize;
private final Integer _newStyle;
public CustomMetricAffectingSpan(Float size)
{
this(null, null, size);
}
public CustomMetricAffectingSpan(Float size, Integer style)
{
this(null, style, size);
}
public CustomMetricAffectingSpan(Typeface type, Integer style, Float size)
{
this._typeface = type;
this._newStyle = style;
this._newSize = size;
}
@Override
public void updateDrawState(TextPaint ds)
{
applyNewSize(ds);
}
@Override
public void updateMeasureState(TextPaint paint)
{
applyNewSize(paint);
}
private void applyNewSize(TextPaint paint)
{
if (this._newStyle != null)
paint.setTypeface(Typeface.create(this._typeface, this._newStyle));
else
paint.setTypeface(this._typeface);
if (this._newSize != null)
paint.setTextSize(this._newSize);
}
}
3) Usa:
Typeface newTypeface = Typeface.createFromAsset(getAssets(), "AguafinaScript-Regular.ttf");
CustomHint customHint = new CustomHint(newTypeface, "Enter some text", Typeface.BOLD_ITALIC, 60f);
// CustomHint customHint = new CustomHint(newTypeface, "Enter some text", Typeface.BOLD_ITALIC);
// CustomHint customHint = new CustomHint(newTypeface, "Enter some text", 60f);
// CustomHint customHint = new CustomHint("Enter some text", Typeface.BOLD_ITALIC, 60f);
// CustomHint customHint = new CustomHint("Enter some text", Typeface.BOLD_ITALIC);
// CustomHint customHint = new CustomHint("Enter some text", 60f);
customEditText.setHint(customHint);
uso di questo codice:
edittext.setAccentTypeface(typeface);
Questo non è disponibile per EditText. –
- 1. android EditText hint non appare
- 2. TextInputLayout hint colour
- 3. Cambia il carattere dell'etichetta mobile EditText e TextInputLayout
- 4. Cambia Colore EditText bordo
- 5. TextInputLayout hint overlap issue
- 6. Elimina l'ultimo carattere di edittext
- 7. Cambia carattere Toast
- 8. Clojure tipo hint per Map.Entry
- 9. Hibernate Query Hint per JPA
- 10. Edittext cambia il colore del bordo con shape.xml
- 11. Cambia stile carattere
- 12. Cambia carattere di JLabel
- 13. Cambia carattere in UITabBarItem
- 14. Graphviz: cambia il carattere per l'intero grafico?
- 15. Cambia EditText IME_ACTION in modo programmatico
- 16. Come gestire EditText Cambia listener in android
- 17. Cambia colore riga di EditText - Android
- 18. Cambia stile EditText Android di bordo rettangolare per sottolineare
- 19. Come ridimensionare il carattere in EditText
- 20. Cambia dimensione carattere nella legenda
- 21. Come posso modificare EditText?
- 22. Animate cambia carattere di una UILabel
- 23. Cambia carattere di sistema per l'applicazione iPhone - intera applicazione
- 24. Cambia carattere editor di Android Studio per Mac?
- 25. Cambia "Dimensione carattere Windows (DPI)" in PowerShell?
- 26. Cambia dimensione carattere in base alla lingua
- 27. Cambia carattere di commento nel blocco note ++
- 28. UITextField cambia il carattere durante la modifica
- 29. SonarLint hint hiding Eclipse tooltip
- 30. Cambia carattere in fase di esecuzione
Eventuali duplicati: http://stackoverflow.com/questions/4716959/setting-typeface-of-hint-in-textedit – thepoosh
Come sottolineato, questo è un duplicato. È possibile modificare il colore del suggerimento, ma non il carattere tipografico. – jsmith
puoi controllare la mia risposta [qui] (http://stackoverflow.com/a/40695930/3578171) spero che funzioni. –