当前位置: 首页 > 知识库问答 >
问题:

更改editText提示的字体

胡沈义
2023-03-14

是否可以更改编辑文本字段中显示的提示的字体?我想在xml本身中设置字体。

共有3个答案

厉念
2023-03-14

有一个非常简单的方法可以做到这一点。我刚刚在我的应用程序中做了,它起作用了。关键是设置您的TextInputLayout的Facetype以及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)));
高经艺
2023-03-14

我还没有找到任何有用的方法来更改XML中的提示字体。但你可以做到这样:

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) {
    }
});
陈宜修
2023-03-14

您可以使用一个SpannableString和一个自定义字体span来更改它。

首先,创建自定义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);
    }
}

然后将字体span设置为SpannableString:

TypefaceSpan typefaceSpan = new CustomTypefaceSpan(typeface);
SpannableString spannableString = new SpannableString(hintText);

spannableString.setSpan(typefaceSpan, 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

最后,只需设置EditText的提示:

mEditText.setHint(spannableString);
 类似资料:
  • 我正在使用设计库中新的。我能够让它显示和改变浮动标签的颜色。不幸的是,实际的提示现在总是白色的。 我尝试过用XML、样式和编程方式更改hintColor,还尝试过使用android。支持v7。小装置。AppCompatiEditText但是提示始终显示白色。 这是我的和 下面是我用于的样式(我尝试将属性设置为黑色,但没有为我做任何事情):

  • 启用这些后,我需要提示以不同的颜色显示,如下所示 当我这样尝试时,效果很好 问题是,我必须使用来显示浮动提示。所以,当我在中添加时,这段代码根本不起作用。我用尝试了很多东西,如下所示。但没有任何效果。我只需要EditText的提示文本颜色(不是浮动提示文本)在启用时应该是一种颜色,在禁用时,在中使用时应该是不同的颜色。请帮助! 注意:我的问题不是这个问题的重复。在那里,它提到了TextInputL

  • 我面临一个奇怪的问题,我有一个InputTextLayout和一个EditText,我正试图实现类似的功能(如下面的图像所示)(图像来自material design Guidlines:https://material.io/guidelines/components/text-fields.html#text-fields-layout),其中有两个独立的提示。我通过在两个布局中添加Andro

  • 使用anaconda(为python安装)时,当我切换到虚拟环境时: 它改变了我的提示,并在PS1的开头添加了(my_env)。 我尝试将添加到我的bashrc中,但没有帮助。 有什么想法吗?

  • 在JavaFX应用程序中,我在choicebox旁边有一个choicebox和textfield。我想在文本域中的灰色文本框告诉用户要输入什么。但是,我希望提示文本根据ChoiceBox中选择的内容进行更改。 我在网上查找并找到了如何使用提示文本的textfield的代码,但我无法用ChoiceBox上的changeListener更改提示文本。 我试过了 而textfield之前已经用不同的提示

  • 我想有一个6位验证码的编辑文本应该这样工作 如何在我的Android应用程序中实现这一点?