Czy można zmienić czcionkę wskazówki wyświetlanej w polu EditText
? Chcę ustawić czcionkę w samym xml.zmiana czcionki dla wskazówki editText
Odpowiedz
To jest zła odpowiedź na pytanie. Próbowałem usunąć, ale nie mogę pominąć moderatorów. Prosimy zignorować odpowiedź lub zachęcamy do aktualizacji odpowiedzi. Ta odpowiedź jest myląca. Przepraszam :).
editText.setTypeface(Typeface.SERIF);
Można zmienić czcionkę EditText
jak TextView
. Ale nie można zmienić kroju czcionki hint
.
Czy jesteś pewien? Moja droga, to dotyczy tekstu wejściowego, a nie tekstu podpowiedzi. –
to jest dla całego EditText, a nie tylko dla podpowiedzi – thepoosh
W rzeczywistości ustawienie dla tej samej czcionki jest w porządku dla mnie. Ale używam nowej czcionki pobranej z sieci i nie wiem, jak utworzyć nowy krój czcionki dla tej czcionki – Ankush
Nie jest to możliwe w XML -
Tekst i podpowiedź może mieć tylko taką samą czcionkę w XML.
ja nie dowiedzieć się każdą użyteczną sposób na zmianę czcionki podpowiedzi w XML.But można osiągnąć tak:
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) {
}
});
Proste rozwiązanie, tak jak powinno być – Darius
Można go zmienić z SpannableString i niestandardowej TypefaceSpan.
Najpierw należy utworzyć klasę klienta 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);
}
}
Następnie wystarczy ustawić TypefaceSpan do SpannableString:
TypefaceSpan typefaceSpan = new CustomTypefaceSpan(typeface);
SpannableString spannableString = new SpannableString(hintText);
spannableString.setSpan(typefaceSpan, 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
I wreszcie po prostu ustawić wskazówkę swojego EditText:
mEditText.setHint(spannableString);
To jest poprawna odpowiedź dla mnie, dzięki @francisco_ssb. Działa idealnie. –
Istnieje prosty sposób na zrobienie tego. Właśnie zrobiłem w mojej aplikacji i zadziałało. Klucz jest ustawiony jako rodzaj czcionki twojego TextInputLayout razem z 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)));
działa jak urok. – JCasso
Mogę zmienić czcionkę podpowiedzi za pomocą tego library.
Po kompilacji biblioteki należy utworzyć klasę aplikacji i definicja klasy następującą komendę:
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("font.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
po każdej aktywności chcesz nadpisać za pomocą następującego polecenia:
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
Po kompilacji biblioteki należy utworzyć klasę aplikacji i definicja klasy następującą komendę: CalligraphyConfig.initDefault (nowe CalligraphyConfig.Builder() .setDefaultFontPath („font.ttf”) .setFontAttrId (R.attr.fontPath) .build() ); Po każdej aktywności chcesz nadpisać za pomocą następującego polecenia: @Override protected void attachBaseContext (Context newBase) { super.attachBaseContext (CalligraphyContextWrapper.wrap (newBase)); } –
@ johnny5, ta odpowiedź pomogła mi, ponieważ korzystałem z biblioteki kaligrafii, której dotyczy ta odpowiedź. HOSHYAR Ahmadpour również wyjaśnił odpowiedź. Dziękuję za odpowiedź HOSHYAR Ahmadpour. – Sakiboy
@Sakiboy tak, to dobrze, byłem w kolejkach opinii, zapewniając, że przyszli ludzie będą mogli skorzystać z tej odpowiedzi, awansowałem go po tym, jak poprawił swoją odpowiedź. –
@ francisco_ssb-tych odpowiedź jest poprawna. Jednak dostarczę alternatywne rozwiązanie, które pomoże zmienić nie tylko czcionkę podpowiedzi, ale także jej rozmiar i styl. Mam nadzieję, że to rozwiązanie będzie pomocne.
1) Tworzenie niestandardowego Hint
obiekt:
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) Tworzenie niestandardowych MetricAffectingSpan
obiektów:
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) Zastosowanie:
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);
użyć tego kodu:
edittext.setAccentTypeface(typeface);
To nie jest dostępne dla EditText. –
- 1. Wskazówki EditText i MultiAutoCompleteTextView
- 2. Wskazówki dla zastępców podczas pisania w EditText w Androidzie
- 3. Zmiana rozmiaru czcionki dla wiadomości AlertDialog
- 4. zmiana czcionki w JTextArea dla różnych linii
- 5. Zmiana Highcharts rozmiar czcionki
- 6. Zmiana właściwości czcionki UINavigationBar?
- 7. Zmiana rozmiaru czcionki tabbaritem
- 8. zmiana rozmiaru czcionki tekstu
- 9. Zmiana czcionki w UITabBarItem
- 10. Zmiana rozmiaru EditText wewnątrz AlertDialog
- 11. Jak zmienić rozmiar czcionki w EditText
- 12. Zmiana czcionki tekstu w RichTextBox
- 13. Zmiana rozmiaru czcionki na AlertDialog
- 14. Zmiana części koloru tekstu w widgecie "EditText"
- 15. Zmiana ikony czcionki w WPF przy użyciu czcionki niesamowitej
- 16. Zmiana rozmiaru czcionki i rodziny czcionek dla iFrame
- 17. Usuwanie marginesu i zmiana stylu czcionki dla etykiet w ggplot
- 18. Zmiana miejsca rozpoczęcia kursora w rozwiniętym EditText
- 19. Android, zmiana podkreślenia Kolor z EditText dynamicznie
- 20. Zmiana koloru kursora EditText systemu Android programowo
- 21. Zmiana koloru kursora EditText w Androidzie 3.0
- 22. Emacs + Mac OSX i zmiana domyślnej czcionki
- 23. Zmiana rozmiaru czcionki w działkach Matlab
- 24. Zmiana rozmiaru czcionki w komórce tabeli
- 25. Zmiana rozmiaru czcionki w ListView - Android/Eclipse
- 26. Zmiana domyślnego rozmiaru czcionki XTerm w Cygwin
- 27. Swift - Zmiana rozmiaru czcionki wewnątrz etykiety
- 28. Zmiana czcionki w dwu-wierszowym tytule rysunku
- 29. Zmiana czcionki paska kart w Swift
- 30. Błąd nakładania się wskazówki TextInputLayout
możliwe duplikat: http://stackoverflow.com/questions/4716959/setting-typeface-of-hint-in-textedit – thepoosh
Jak podkreślił, jest to duplikat. Możesz zmienić kolor podpowiedzi, ale nie krój pisma. – jsmith
możesz sprawdzić moją odpowiedź [tutaj] (http://stackoverflow.com/a/40695930/3578171) nadzieję, że to działa. –