SpannableString не работает - отображает неизмененные данные - PullRequest
0 голосов
/ 06 декабря 2018

У кого-нибудь есть идея, почему следующий код не меняет данные?Добавлена ​​строка «expired», но цвет и размер шрифта не изменились.

        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" />

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Правильное решение:

String s = name + " expired";
SpannableString  expired = new SpannableString(s);
expired.setSpan(new ForegroundColorSpan(Color.RED), name.length(), expired.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
expired.setSpan(new RelativeSizeSpan(.7f), name.length(), expired.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
nameTextView.setText(expired);
0 голосов
/ 06 декабря 2018

Вы использовали 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);
...