Можно ли установить шрифт элемента подсказки в виде EditText без изменения шрифта самого EditText? Спасибо.
Настройка шрифта подсказки в TextEdit
Ответ 1
Кажется, что нет никакого способа контролировать шрифт подсказки и шрифта текста отдельно.
Ответ 2
Вы проверили android:typeface
?
Это отлично работает как для подсказки, так и для текста EditText.
Ответ 3
Не знаю, нужно ли просто им быть другим, или если вы хотите специально установить шрифт.
Если вам просто нужно стилизовать свою подсказку иначе, чем текст, вот как вы можете это сделать в Java на основе каждого поля
- Оберните текст подсказки в тегах стиля HTML
- Передайте отмеченную строку в Html.fromHtml(String htmlString)
-
Передайте результат fromHtml() в setHint();
myField.setHint(Html.fromHtml("<i>" + hint + "</i>"));
Ответ 4
Вы можете установить шрифт подсказки с помощью переопределения 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);
}
}
Ответ 5
чтобы иметь конкретный шрифт, есть большая библиотека здесь, это очень просто, но иметь edittext с android: inputType = "textPassword" вы должны сделать немного больше, так что вот оно:
- удалить андроид: inputType = "textPassword" из xml
- примените шрифт, используя эту library
-
установить пароль в виде кода:
password.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); password.setTransformationMethod(PasswordTransformationMethod.getInstance());
Ответ 6
лучший способ справиться с этой проблемой - добавить TextWatcher в свой EditText и динамически изменить шрифт, если в EditText нет ввода
Ответ 7
Вам не нужно ничего делать. Просто установите шрифт в EditText, и это также автоматически изменит шрифт подсказки.
Вот пользовательский шрифт и как его установить:
Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/gobold_uplow.ttf");
Edittext mEmailEntry = (EditText) findViewById(R.id.entry_email);
mEmailEntry.setTypeface(typeface);
Ответ 8
mEmailView.setTypeface(Typeface.createFromAsset(getAssets(),
getString(R.string.app_font)));
((TextInputLayout) findViewById(R.id.tilEmail)).setTypeface(Typeface.createFromAsset(
getAssets(), getString(R.string.app_font)));
Ответ 9
Вы должны создать CustomTypefaceSpan, чтобы иметь разные шрифты для подсказок и 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);
}
}
Ответ 10
editText.setTypeface(Typeface.SERIF);