web-dev-qa-db-ja.com

スナックバーの書体を変更する

私はこのコードでSnackbarを構築します:

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

       }
});

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

19
user5510211

スナックバーからビューを取得して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);
36
Ashish Agrawal

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

同じ方法を使用して、snackbar_textsnackbar_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 );

私の例では、アクションをフォントサイズ20と太字に設定し、テキストをサイズ16に設定して、最大3行を許可します。

12
Joshua Pinter

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

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

または、 this および this を見てください。

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

3
Anoop M

この回答 に加えて:IDでスナックバーのテキストビューを検索するパッケージは

val snackText = snackView.findViewById<TextView>(
                    com.google.Android.material.R.id.snackbar_text)
3
STAYER

AndroidXの場合

Android.support.design.R.id.snackbar_textは利用できません。

使用com.google.Android.material.R.id.snackbar_text代わりに。

kotlinを使用している場合、拡張機能を使用することをお勧めします:

fun Snackbar.changeFont()
{
    val tv = view.findViewById(com.google.Android.material.R.id.snackbar_text) as TextView
    val font = Typeface.createFromAsset(context.assets, "your_font.ttf")
    tv.typeface = font
}

そしてそれを次のように呼びます:

mSnakeBar.changeFont()
2
Suraj Vaishnav

資産を取得する

AssetManager assets = context.getAssets();

書体を入手

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

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

0
Vibhor Chopra

アクションボタンとテキストビューのフォントを変更する場合は、次のコードを使用してください。

Snackbar.make(this,message,Snackbar.LENGTH_LONG).also {snackbar ->
  snackbar.setAction("ok"){
     snackbar.dismiss()
  }
  val actionButton = snackbar.view.findViewById(com.google.Android.material.R.id.snackbar_action) as Button
  val textview = snackbar.view.findViewById(com.google.Android.material.R.id.snackbar_text) as TextView
  val font = Typeface.createFromAsset(context.assets, "fonts/your_custom_font")
  actionButton.typeface = font
  textview.typeface = font
  ViewCompat.setLayoutDirection(snackbar.view,ViewCompat.LAYOUT_DIRECTION_RTL)

}。公演()

0

サポートライブラリ26から、フォントはリソースとして使用できます。

val mainTextView = view.findViewById(com.google.Android.material.R.id.snackbar_text) as TextView
val font = ResourcesCompat.getFont(applicationContext, R.font.your_font)
mainTextView.typeface = font
0