如何将样式从styles.xml应用到跨度?

时间:2018-12-13 19:36:04

标签: android android-layout

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

styles.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>

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

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

1 个答案:

答案 0 :(得分:0)

StyleSpan可以设置文本是粗体,斜体还是普通文本。

  

跨度,可以设置所附加文本的样式。可能的样式为:Typeface.NORMAL,Typeface.BOLD,Typeface.ITALIC和Typeface.BOLD_ITALIC。

我认为您正在寻找的是TextAppearanceSpan。来自"Styles and Themes"

  

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

该应用程序与您当前正在执行的操作类似。如果这样做不能满足您的所有需求,请查看complete list of span types