Установка шрифта подсказки в TextEdit - PullRequest
8 голосов
/ 17 января 2011

Можно ли установить гарнитуру элемента подсказки представления EditText без изменения гарнитуры самого EditText? Спасибо.

Ответы [ 11 ]

10 голосов
/ 19 февраля 2011

Похоже, что нет возможности отдельно контролировать гарнитуру подсказки и гарнитуру текста.

2 голосов
/ 23 июня 2011

Не знаю, нужно ли вам, чтобы они были другими, или вы хотели специально установить гарнитуру.

Если вам просто нужно оформить подсказку иначе, чем текст, вот как вы можете сделать это в Java для каждого поля

  1. Оберните текст подсказки в теги стиля HTML
  2. Передать размеченную строку в Html.fromHtml (String htmlString)
  3. Передать результат fromHtml () в setHint ();

    myField.setHint(Html.fromHtml("<i>" + hint + "</i>"));
    
2 голосов
/ 19 января 2011

Вы проверяли android:typeface?

Это прекрасно работает как для подсказки, так и для текста для EditText.

1 голос
/ 17 августа 2018

Если кому-то все еще нужно решение для этого:

 editText.addTextChangedListener(object : TextWatcher {
            override fun afterTextChanged(s: Editable?) {
                editText.typeface = ResourcesCompat.getFont(it, if (TextUtils.isEmpty(s.toString())) R.font.franklingothic_book else R.font.franklingothic_demi)
            }

            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
        })
1 голос
/ 19 ноября 2016

для того, чтобы иметь определенный шрифт, есть большая библиотека здесь , это очень просто, но чтобы иметь текст редактирования с android: inputType = "textPassword", вам нужно сделать немного больше, так что здесь это :

  1. удалить android: inputType = "textPassword" из xml
  2. применить шрифт, используя эту библиотеку
  3. установить преобразование пароля в коде:

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

1 голос
/ 01 июня 2016

Вы можете установить шрифт подсказки, переопределив 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);
}
}
0 голосов
/ 01 августа 2017

Вы должны создать CustomTypefaceSpan, чтобы иметь разные шрифты для 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);
    }
}
0 голосов
/ 26 апреля 2017
mEmailView.setTypeface(Typeface.createFromAsset(getAssets(),
    getString(R.string.app_font)));

((TextInputLayout) findViewById(R.id.tilEmail)).setTypeface(Typeface.createFromAsset(
     getAssets(), getString(R.string.app_font)));
0 голосов
/ 12 августа 2016

Вам не нужно ничего делать.Просто установите гарнитуру на EditText, и это также автоматически изменит шрифт подсказки.

Вот пользовательская гарнитура и как ее установить:

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/gobold_uplow.ttf");

Edittext mEmailEntry = (EditText) findViewById(R.id.entry_email);
mEmailEntry.setTypeface(typeface);
0 голосов
/ 25 декабря 2015

editText.setTypeface(Typeface.SERIF);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...