Изменить шрифт тост - PullRequest
19 голосов
/ 31 мая 2010

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

Я хочу изменить текст «Hello» с помощью пользовательского шрифта, который я пробовал с TypeFace.

и затем я хочу установить переменную в месте "TextClicked" .. Я пытался с локальной переменной .. но это не работает

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

Ответы [ 5 ]

32 голосов
/ 29 марта 2013

Ответ здесь: https://stackoverflow.com/a/13231981

После рефакторинга немного:

    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();

Это сработало для меня как шарм!

18 голосов
/ 31 мая 2010

Из официальной документации:

Создайте свой собственный ToastView

Если простого текстового сообщения недостаточно, вы можете создать собственный макет для всплывающего уведомления. Чтобы создать пользовательский макет, определите макет представления в XML или в коде приложения и передайте корневой объект View методу setView(View).

Перейдя по ссылке на официальную документацию Google, приведу примеры.

9 голосов
/ 13 мая 2014

Вы можете использовать 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);
    }
}
2 голосов
/ 21 февраля 2013

К сожалению, код на странице Java содержит ошибки.Вот ссылка на работающую функцию, которую вы можете реализовать, которая дает вам текст (я знаю, потому что я его тестировал), и с небольшой изобретательностью, может быть расширена для передачи аргументов для размера, цвета и т. Д. *

Функция размера шрифта Toast здесь

0 голосов
/ 26 марта 2019

Функция Котлина:

fun makeLargeTextToast(text: CharSequence): Toast {
    return Toast.makeText(applicationContext, text, Toast.LENGTH_LONG).also {
        val toastLayout = it.view as LinearLayout
        val toastTV = toastLayout.getChildAt(0) as TextView
        toastTV.textSize = 30f
    }
}

Используйте это как:

makeLargeTextToast("text message").show()
...