使用XML

时间:2015-08-13 20:33:02

标签: java android spannablestring

我有一个TextView,它使用XML中的app宽样式集,我想保留在XML定义中。现在,如果我在消息中找到一个特殊字符串,我想在TextView上设置,我想强调它。现在使用UnderlineSpan类并设置stand和end非常简单。问题是当我在XML中设置样式时,跨度被完全忽略,如果我删除了下划线正确的样式。如何在XML中应用样式并允许应用自定义跨度?

修改

styles.xml文件中的样式是:

<style name="Heading3Style">
    <item name="android:textAllCaps">true</item>
    <item name="android:textColor">@color/black_red</item>
    <item name="android:textSize">@dimen/text_heading_1</item>
    <item name="font">ROCKWELL_STD_BOLD</item>
</style>

font属性是一个自定义属性,由一个扩展TextView的类提取,用于从XML加载自定义字体。我的布局文件有这个定义:

<com.mypackage.views.font.FontTextView
    android:id="@+id/titleView"
    style="@style/Heading3Style"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/standard_margin" />

这是我尝试将span应用于文本的代码。为简单起见,我只是在整个字符串上使用UnderLine span来测试,但这不起作用。我Spannable工作后,我会将其替换为自定义Spannable,以便仅对字符串的某些部分进行更改。

Spannable spannable = new SpannableString(modifierGroup.getName());
spannable.setSpan(new UnderlineSpan(), 0, modifierGroup.getName().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
titleView.setText(spannable);

这对字符串没有任何作用,它只是在应用了Heading3Style时正常显示,但没有下划线。如果我从XML定义中删除style="@style/Heading3Style,一切都按预期工作。

0 个答案:

没有答案