首页 > 解决方案 > SpannableString 不起作用 - 显示未更改的数据

问题描述

有谁知道为什么以下代码不会更改数据?添加了“过期”字符串,但字体颜色和大小均未更改。

        Spannable expired = new SpannableString(" expired");
        expired.setSpan(new ForegroundColorSpan(Color.RED), 0, expired.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        expired.setSpan(new RelativeSizeSpan(.5f), 0, expired.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        nameTextView.setText(goalsName + expired);

xml:

        <TextView
        android:id="@+id/goal_list_name_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="22sp"
        android:layout_marginBottom="8sp"
        android:focusable="true"
        tools:text="Cel 1" />

标签: androidspannablestringspannable

解决方案


你已经使用了Spannable,你应该使用SpannableString。如下更改您的代码。

String s = "oldString"+" expired";
SpannableString expired=  new SpannableString(s);
expired.setSpan(new ForegroundColorSpan(Color.RED), 10, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
expired.setSpan(new RelativeSizeSpan(.5f), 10, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
nameTextView.setText(expired);

推荐阅读