Heyo, я использую SpannableStringBuilder
, чтобы изменить цвет каждого символа. Это, как я использую его:Android - Использование SpannableStringBuilder для изменения цвета персонажа
SpannableStringBuilder specialSpan = new SpannableStringBuilder();
specialSpan.append(context.getResources().getString(R.string.asdf));
specialSpan.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.blue)), 0, 0, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
specialSpan.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.purple)), 1, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
specialSpan.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.orange)), 2, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
specialSpan.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.green)), 3, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
userSpecialText.setText(specialSpan);
Проблема есть, TextView
«s цвет не меняется. Я что-то упустил?
Update:
Я использую эту другую Spannable строку строитель, который работает для добавления Emojis
for (String part :
partofContent){
if (part.contains(":")){
int firstEq = sb.length();
Typeface font = FontCache.getTypeface("emojione-android.ttf", context);
String convertPart = Emojione.shortnameToUnicode(part, true);
sb.append(convertPart + " ");
int lastEq = sb.length();
sb.setSpan(new CustomTypefaceSpan("", font), firstEq, lastEq, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
} else {
sb.append(part + " ");
}
}
И изменить цвет обнаруженного пользователя Алиас
int aliasStart = sb.length();
sb.append("@" + alias + " ");
int aliasEnd = sb.length();
sb.setSpan(new MyClickableSpan("@" + alias + " "), aliasStart, aliasEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.miBlue)), aliasStart, aliasEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), aliasStart, aliasEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
Это работало тоже, и он использует то же самое ForegroundColorSpan
в setSpan()
.
Я сделал это, и я вернул его. Цвет по-прежнему не изменился. –
Я уже пробовал, и, чтобы ответить на него, это была прекрасная работа. –
@ Kevin Murvie: Попробуйте изменить флаг - >> Spannable.SPAN_EXCLUSIVE_EXCLUSIVE до "0" (Zero) –