Подтвердить что ты не робот

Изменить шрифт тоста

В настоящее время я пытаюсь разработать приложение. и я не знаю, как изменить шрифт 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". Я пробовал с локальной переменной.. но она не работает.

любая помощь с примером исходного кода будет для меня действительно отличной.

4b9b3361

Ответ 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 здесь