Вопрос

В настоящее время я пытаюсь разработать приложение. И я не знаю, как изменить тост шрифт. Отказ

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

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

И тогда я хочу установить переменную на место «TextClicked» .. я пытался с локальной переменной .. Но это не работает

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

Это было полезно?

Решение

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

Создайте свой Custom ToastView

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

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

Другие советы

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

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

 Toast Toast = Toast.maketext (контекст, r.string.yummytaast, toast.length_short); Linearlayout toastlayout = (linearlayout) toast.getView (); TEXTVIEW TOATTTV = (TEXTVIEW) TOASTLAYOUT.GETCHILDAT (0); toasttv.settextsize (30); Toast.show ();

Это работало для меня, как очарование!

Вы можете использовать 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);
    }
}

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

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

Функция Kotlin:

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()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top