Spanned строка теряет жирный стиль при добавлении символов
Я установил следующий текст и стиль в моем EditText
:
SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append("Hello");
sb.setSpan(new StyleSpan(Typeface.BOLD), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.append("World Test");
et.setText(sb);
Результат таков: "Hello World Test". Это отлично. Теперь, когда я помещаю курсор после символа "d" (т.е. перед пробелом, который разделяет World
а также Test
) и введите символ, Hello автоматически теряет жирный стиль.
Это почему? Это смущает меня. Это происходит только при позиционировании курсора сразу после "d" в World
и ввод персонажа. Для всех остальных позиций курсора это работает как положено.
Почему это и как это исправить? Я хочу, чтобы Привет остался в смелом.
1 ответ
Может быть, вы должны попробовать это
SpannableStringBuilder sb = new SpannableStringBuilder();
int s = sb.length();
sb.append("Hello");
sb.setSpan(new ForegroundColorSpan(0xFFCC5500), s,
sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), s,
sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.append("World Test");
et.setText(sb);
или попробуйте это после API 21
SpannableStringBuilder sb = new SpannableStringBuilder();
StyleSpan bold = new StyleSpan(android.graphics.Typeface.BOLD);
sb.append("Hello")
.append("BOLD ", bold, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
.append("World");
как стиль HTML попробуйте ниже
String str = "<b>" + "hello" + "</b> " + "World Test";
et.setText(Html.fromHtml(str));