本文介绍了更改editText提示的字体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以更改EditText
字段中显示的提示的字体?我想在xml本身中设置字体.
Is it possible to change the font for the hint displayed in the EditText
field? I want to set the font in the xml itself.
推荐答案
您可以使用SpannableString和Custom TypefaceSpan对其进行更改.
You can change it with a SpannableString and a Custom TypefaceSpan.
首先,创建一个Custom TypefaceSpan类:
First, create a Custom TypefaceSpan class:
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);
}
}
然后将TypefaceSpan设置为SpannableString:
Then just set the TypefaceSpan to a SpannableString:
TypefaceSpan typefaceSpan = new CustomTypefaceSpan(typeface);
SpannableString spannableString = new SpannableString(hintText);
spannableString.setSpan(typefaceSpan, 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
最后只需设置您的EditText提示:
And finally just set the hint of your EditText:
mEditText.setHint(spannableString);
这篇关于更改editText提示的字体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!