web-dev-qa-db-ja.com

トーストフォントを変更する

現在、アプリを開発しようとしています。 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で試したカスタムフォントで「Hello」というテキストを変更したい。

次に、「TextClicked」の場所に変数を設定したい..ローカル変数で試しました..しかし、それは機能しません

サンプルソースコードのヘルプは私にとって本当に素晴らしいでしょう。

20
Ye Lin Aung

公式ドキュメントから:

カスタムToastViewを作成します

単純なテキストメッセージでは不十分な場合は、トースト通知用にカスタマイズされたレイアウトを作成できます。カスタムレイアウトを作成するには、XMLまたはアプリケーションコードでビューレイアウトを定義し、ルートビューオブジェクトをsetView(View)メソッドに渡します。

公式のGoogleドキュメントへのリンクをたどると、例が提供されます。

18

答えはここにあります: 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(); 

これは私にとって魅力のように機能しました!

32
DritanX

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);
    }
}
9
Hamid FzM

残念ながら、Javaページのコードにはバグがあります。これは、テキスト(テストしたのでわかります)を少し工夫して実装できる機能へのリンクです。 、サイズ、色などの引数を渡すように拡張できます。

トーストフォントサイズ関数 ここ

3
MontyThreeCard

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()
0
naXa