如何将粗体文本设置为Android Snackbar Action Text?

时间:2015-08-26 11:41:30

标签: android android-layout android-snackbar snackbar

我们可以使用setActionTextColorhttps://developer.android.com/reference/android/support/design/widget/Snackbar.html中记录的setDataSource()设置Snackbar操作文本的颜色。但是,有没有办法让文字大胆?

谢谢!

3 个答案:

答案 0 :(得分:10)

使用snackbar_action资源ID。

您可以使用相同的方法设置Snackbar的Action文本的样式,该文本用于设置Snackbar的Message文本的样式。

您只需使用资源ID snackbar_action而不是snackbar_text

以下是为设置消息文本和操作文本的样式的示例。

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

在我的示例中,我将操作文本设置为TextSize为20,加粗Typeface,并将消息文本设置为TextSize为16并允许到3行。

答案 1 :(得分:0)

BOLD 文本添加到Snackbar文本的最简单方法是使用Android Html class生成要传递给Snackbar.make()函数的文本。这是一个例子:

Snackbar.make(view, Html.fromHtml("Add <b>bold</b> to Snackbar text"), Snackbar.LENGTH_LONG).show();

另一种方法是使用SpannableStringBuilder类。

SpannableStringBuilder snackbarText = new SpannableStringBuilder();
snackbarText.append("Add ");
int boldStart = snackbarText.length();
snackbarText.append("bold");
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();

答案 2 :(得分:0)

使用Material Components 1.1.0 版本,您可以在应用主题中定义属性snackbarButtonStyle

<style name="AppTheme" parent="Theme.MaterialComponents.*">
  <item name="snackbarButtonStyle">@style/snackbar_button</item>
</style>

通过这种方式,您可以为用于Action的按钮定义自定义样式。
您可以更改文本颜色,背景色,还可以为textAppearance定义自定义样式。
像这样:

  <style name="snackbar_button" parent="@style/Widget.MaterialComponents.Button.TextButton.Snackbar">
      <item name="android:textAppearance">@style/snackbar_button_textappearance</item>
  </style>

  <style name="snackbar_button_textappearance"  parent="@style/TextAppearance.MaterialComponents.Button">
    <item name="android:textStyle">bold</item>
  </style>

enter image description here