20

次のコードで Snackbar をビルドします。

Snackbar sb = Snackbar.make(drawer,  "message", Snackbar.LENGTH_LONG)
       .setAction("action", new View.OnClickListener() {
       @Override
       public void onClick(View view) {

       }
});

メッセージとアクションボタンの書体を変更したいのですが、解決策が見つかりません。

4

9 に答える 9

42

スナックバーからビューを取得して TypeFace を設定できます

TextView tv = (TextView) (mSnackBar.getView()).findViewById(android.support.design.R.id.snackbar_text);
Typeface font = Typeface.createFromAsset(getContext().getAssets(), "fonts/font_file.ttf");
tv.setTypeface(font);

AndroidX の場合、リソース ID を使用しますcom.google.android.material.R.id.snackbar_text

于 2015-11-04T08:56:46.567 に答える
15

スナックバーのテキストとアクションの両方のスタイリング

同じ方法を使用して、 と の両方をスタイルできsnackbar_textますsnackbar_action

スナックバーを作成したら、次を使用して、テキストとアクションに関連付けられたビューを取得し、ビューに調整を適用できます。

Snackbar snackbar = Snackbar.make( ... )    // Create the Snackbar however you like.

TextView snackbarActionTextView = (TextView) snackbar.getView().findViewById( android.support.design.R.id.snackbar_action );
snackbarActionTextView.setTextSize( 20 );
snackbarActionTextView.setTypeface(snackbarActionTextView.getTypeface(), Typeface.BOLD);

TextView snackbarTextView = (TextView) snackbar.getView().findViewById(android.support.design.R.id.snackbar_text);
snackbarTextView.setTextSize( 16 );
snackbarTextView.setMaxLines( 3 );

私の例では、Action をフォント サイズ 20 の Bold に設定し、Text をサイズ 16 で最大 3 行まで許容するように設定しました。

于 2016-04-22T17:34:09.757 に答える
5

この回答に加えて、IDでsnackbarのテキストビューを見つけるためのパッケージが今

val snackText = snackView.findViewById<TextView>(
                    com.google.android.material.R.id.snackbar_text)
于 2019-05-22T06:31:15.983 に答える
4

スナックバー ビューを取得してカスタマイズを適用する

TextView tv = (TextView) sb.getView().findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
tv.setTypeface(Typeface.createFromAsset(
                    getAssets(),
                    "fonts/ur_file.ttf"));

またはこれ

SpannableStringBuilder snackbarText = new SpannableStringBuilder();
snackbarText.append("Add ");
int boldStart = snackbarText.length();
snackbarText.append("bold color");
snackbarText.setSpan(new ForegroundColorSpan(0xFFFF0000), boldStart, snackbarText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
snackbarText.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), boldStart, snackbarText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
snackbarText.append(" to Snackbar text");

Snackbar.make(view, snackbarText, Snackbar.LENGTH_LONG).show();

または、これこれを見てください。

ありがとうございました。

于 2015-11-04T08:50:27.620 に答える
0

アセットを取得する

AssetManager assets = context.getAssets();

書体を取得

Typeface typeface = Typeface.createFromAsset(assets,PATH OF .TTF FILE);

パス: font/robotoregular.ttf (.ttf ファイルが assets/font パスに保存されている場合)

于 2015-11-04T08:49:57.593 に答える