java – Changing typeface of Snackbar-ThrowExceptions

Exception or error:

I build Snackbar by this code:

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


Now I want to change the typeface of message and action button but can’t find any solution, How to do that?

How to solve:

You can set TypeFace by getting view from Snack bar

TextView tv = (TextView) (mSnackBar.getView()).findViewById(;
Typeface font = Typeface.createFromAsset(getContext().getAssets(), "fonts/font_file.ttf");


Styling Both the Snackbar Text and Action

You can use the same method to style both the snackbar_text and snackbar_action.

Once you’ve created a snackbar, you can use the following to get the Views associated with the text and the action and then apply whatever adjustments to the view.

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

TextView snackbarActionTextView = (TextView) snackbar.getView().findViewById( );
snackbarActionTextView.setTextSize( 20 );
snackbarActionTextView.setTypeface(snackbarActionTextView.getTypeface(), Typeface.BOLD);

TextView snackbarTextView = (TextView) snackbar.getView().findViewById(;
snackbarTextView.setTextSize( 16 );
snackbarTextView.setMaxLines( 3 );

In my example, I’ve set the Action to be font size 20 and Bold, and the Text to be size 16 and allow up to 3 lines.


Get the snack bar view and apply customization

TextView tv = (TextView) sb.getView().findViewById(;

Or this

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(, boldStart, snackbarText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
snackbarText.append(" to Snackbar text");

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

Or you can give a look at this and this.

Thank you.


In addition to this answer: now package to find snackbar’s textview by id is

val snackText = snackView.findViewById<TextView>(


For AndroidX won’t be available.


If you are using kotlin, then i prefer you to use extension function:

fun Snackbar.changeFont()
    val tv = view.findViewById( as TextView
    val font = Typeface.createFromAsset(context.assets, "your_font.ttf")
    tv.typeface = font

and call it like:



Get assets

AssetManager assets = context.getAssets();

Get Typeface

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

Path: font/robotoregular.ttf (if .ttf file is stored in assets/font path)


Starting from Support Library 26, fonts can be used as resources.

val mainTextView = view.findViewById( as TextView
val font = ResourcesCompat.getFont(applicationContext, R.font.your_font)
mainTextView.typeface = font


if you want to change the font of Action Button and textview use this code :

Snackbar.make(this,message,Snackbar.LENGTH_LONG).also {snackbar ->
  val actionButton = snackbar.view.findViewById( as Button
  val textview = snackbar.view.findViewById( as TextView
  val font = Typeface.createFromAsset(context.assets, "fonts/your_custom_font")
  actionButton.typeface = font
  textview.typeface = font


Leave a Reply

Your email address will not be published. Required fields are marked *