在TextEdit中设置提示的字体

是否可以设置EditText视图的提示元素的字体,而不改变EditText本身的字体? 谢谢。

Solutions Collecting From Web of "在TextEdit中设置提示的字体"

似乎没有办法分别控制文字提示和字体的字体。

你检查了android:typeface吗?

这对于EditText的提示和文本都可以正常工作。

不知道你是否需要让他们不同,或者如果你想专门设置字体。

如果您只需要将提示的样式设置为与文本不同的样式,则可以按照每个字段的方式在Java中执行此操作

  1. 用HTML样式标签包装你的提示文本
  2. 将标记的string传递给Html.fromHtml(String htmlString)
  3. 将fromHtml()的结果传递给setHint();

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

您可以通过覆盖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); } } 

为了有特定的字体在这里有一个伟大的库,它非常简单,但要有一个与android:inputType =“textPassword”的编辑文本,你应该做更多一点,所以这里是:

  1. 从xml中删除android:inputType =“textPassword”
  2. 使用这个库应用字体
  3. 在代码中设置密码转换:

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

处理这个问题的最好方法是在EditText中添加一个TextWatcher,并在EditText中没有input时dynamic改变字体

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

你不必做任何事情。 只需简单地将字体设置为EditText,即可自动更改提示字体。

这是自定义字体,以及如何设置它:

 Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/gobold_uplow.ttf"); Edittext mEmailEntry = (EditText) findViewById(R.id.entry_email); mEmailEntry.setTypeface(typeface); 

您应该创buildCustomTypefaceSpan为Hint和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); } } 

editText.setTypeface(Typeface.SERIF);