Изменить шрифт тоста
В настоящее время я пытаюсь разработать приложение.
и я не знаю, как изменить шрифт Toast..
final OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
try {
Toast.makeText(nova.this,"Hello", 500000).show();
}
catch (Exception e) {
Toast.makeText(nova.this,"Exception:" +e, 500000);
}
}
};
Я хочу изменить текст "Привет" с помощью специального шрифта, который я пробовал с помощью TypeFace.
и Затем я хочу установить переменную в месте "TextClicked". Я пробовал с локальной переменной.. но она не работает.
любая помощь с примером исходного кода будет для меня действительно отличной.
Ответы
Ответ 1
Из официальной документации:
Создайте свой собственный ToastView
Если простого текстового сообщения недостаточно, вы можете создать индивидуальный макет для вашего тоста. Чтобы создать настраиваемый макет, определите макет вида в XML или код приложения и передайте корневой объект View методу setView(View)
.
После ссылки на официальную документацию Google будут представлены примеры.
Ответ 2
Ответ здесь: fooobar.com/questions/198640/...
После рефакторинга немного:
Toast toast = Toast.makeText(context, R.string.yummyToast, Toast.LENGTH_SHORT);
LinearLayout toastLayout = (LinearLayout) toast.getView();
TextView toastTV = (TextView) toastLayout.getChildAt(0);
toastTV.setTextSize(30);
toast.show();
Это работало для меня как шарм!
Ответ 3
Вы можете использовать SpannableString для установки шрифта:
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/ATaha.ttf");
SpannableString efr = new SpannableString("Toast font changed!");
efr.setSpan(new TypefaceSpan(font), 0, efr.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Toast.makeText(this, efr, Toast.LENGTH_SHORT).show();
Пользовательский класс Span, который имеет определенный набор шрифтов:
public class TypefaceSpan extends MetricAffectingSpan {
private Typeface mTypeface;
public TypefaceSpan(Typeface typeface) {
mTypeface = typeface;
}
@Override
public void updateMeasureState(TextPaint p) {
p.setTypeface(mTypeface);
p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
}
@Override
public void updateDrawState(TextPaint tp) {
tp.setTypeface(mTypeface);
tp.setFlags(tp.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
}
}
Ответ 4
К сожалению, код на странице Java прослушивается. Вот ссылка на рабочую функцию, которую вы можете реализовать, которая дает вам текст (я знаю, потому что я его протестировал), и с небольшой изобретательностью можно расширить, чтобы передать аргументы для размера, цвета и т.д.
Функция размера шрифта Toast здесь