簡體   English   中英

如何將粗體文本設置為 Android Snackbar 操作文本?

[英]How to set Bold text to Android Snackbar Action Text?

我們可以使用setActionTextColor設置 Snackbar 的操作文本的顏色,如https://developer.android.com/reference/android/support/design/widget/Snackbar.ZFC35FDC70D5FC69D2569EZ83中所述。 但是,有沒有辦法使文本加粗?

謝謝!!

使用snackbar_action資源ID。

事實證明,您可以使用與用於設置 Snackbar 消息文本樣式的方法相同的方法來設置 Snackbar 操作文本的樣式。

您只需要使用資源 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 );

在我的示例中,我將 Action 文本設置為TextSize為 20 和粗體Typeface ,將 Message 文本設置為TextSize為 16 並允許最多 3 行。

粗體文本添加到 Snackbar 文本的最簡單方法是使用Android Html 類生成要傳遞給 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();

使用Material Components 的1.1.0版本,您可以在應用程序主題中定義屬性snackbarButtonStyle

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

通過這種方式,您可以為用於操作的按鈕定義自定義樣式。
您可以更改文本顏色、背景顏色,還可以為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>

在此處輸入圖片說明

在小吃欄中加粗文本的最佳方法是在此處提供一種解決方案,但我將使其更簡單:

Snackbar snackbar = Snackbar
                    .make(yourViewHere, Html.fromHtml("<b>Email Copied To Clipboard</b>"), Snackbar.LENGTH_LONG);

 snackbar.show();

目前在 2022 年的最新方法是使用HtmlCompat.fromHtml而不是 Html.fromHtml 來做到這一點:

在 Java 中:

    Snackbar snackbar = Snackbar.make(view, 
                                      Html.fromHtml("<b>Your text here</b>"), 
                                      Snackbar.LENGTH_LONG);
    snackbar.show();

在 Kotlin 中:

    val snackbar = Snackbar.make(requireView(),
           HtmlCompat.fromHtml("<b>Your text here</b>", HtmlCompat.FROM_HTML_MODE_LEGACY), 
           Snackbar.LENGTH_SHORT)

    snackbar.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM