首页 > 解决方案 > 如何将styles.xml中的样式应用到span?

问题描述

我正在尝试将 styles.xml 中定义的自定义样式应用于TextView. 我尝试使用SpannableStringBuilderwith StyleSpan,但这似乎不起作用。希望对此有任何指示。这是我的代码现在的样子:

样式.xml

<style name="damn_red">
     <item name="android:textColor">@color/f_red_800</item>
     <item name="android:background">@color/f_red_800</item>
     <item name="android:text">@color/f_red_800</item>
</style>

活动.java

SpannableStringBuilder spannable = new SpannableStringBuilder();
spannable.append("Some ")
         .append("text ",  new StyleSpan(R.style.damn_red), Spanned.SPAN_INCLUSIVE_INCLUSIVE)
         .append("this is");
TextView textView = findViewById(R.id.mytextview);
textView.setText(spannable, TextView.BufferType.SPANNABLE);

我在这里查看了多个问题,但找不到任何可以回答这个问题的问题。将不胜感激这里的任何指针。谢谢!

标签: androidandroid-layout

解决方案


AStyleSpan可以设置文本是粗体、斜体还是正常。

跨度允许设置它附加到的文本的样式。可能的样式有:Typeface.NORMAL、Typeface.BOLD、Typeface.ITALIC 和 Typeface.BOLD_ITALIC。

我认为您正在寻找的是TextAppearanceSpan. 来自“风格和主题”

样式的一个限制是您只能将一种样式应用于视图。但是,在 TextView 中,您还可以指定一个 TextAppearance 属性,该属性的功能类似于样式...

该应用程序类似于您当前正在执行的操作。如果这不能满足您的所有需求,请查看span types 的完整列表


推荐阅读