回答編集履歴
1
追記
answer
CHANGED
@@ -4,9 +4,11 @@
|
|
4
4
|
TextView textView = findViewById(R.id.textView);
|
5
5
|
SpannableStringBuilder sb = new SpannableStringBuilder(textView.getText());
|
6
6
|
sb.replace(4, 5, "う");
|
7
|
-
sb.replace(5, 6, "う");
|
7
|
+
sb.replace(5, 6, "う"); // この部分の装飾は維持される
|
8
8
|
sb.replace(6, 7, "う");
|
9
9
|
textView.setText(sb);
|
10
10
|
```
|
11
11
|
|
12
|
-
replaceで装飾部分と非装飾部分を横断するような範囲指定をすると、setSpanで設定したフラグ(Spanned.SPAN_INCLUSIVE_INCLUSIVEのような)次第で、replaceした全てが装飾されるか、replaceした全ての装飾が解除されるか、いずれかになってしまうようですね。ですから、この場合は1文字ずつreplaceするしかない、という感じみたい。
|
12
|
+
replaceで装飾部分と非装飾部分を横断するような範囲指定をすると、setSpanで設定したフラグ(Spanned.SPAN_INCLUSIVE_INCLUSIVEのような)次第で、replaceした全てが装飾されるか、replaceした全ての装飾が解除されるか、いずれかになってしまうようですね。ですから、この場合は1文字ずつreplaceするしかない、という感じみたい。
|
13
|
+
|
14
|
+
もっと良い方法があるかもしれないけど、思いつきませぬ。
|