【发布时间】:2015-05-08 01:18:10
【问题描述】:
我有以下要求:
i> 用户在 EditText 中输入一个字符串。
例如:aaaaaa bbbbbbbbb ccccccccccccc
ii> 用户现在选择子字符串“bbbbbbbbb”并为子字符串添加粗体样式。
使用以下代码选择子字符串:
EditText content = (EditText) layout
.findViewById(R.id.txt_content);
int startSelection = content.getSelectionStart();
int endSelection = content.getSelectionEnd();
现在,将粗体样式应用于子字符串,添加了以下代码以反映 EditText 上的样式:
final SpannableStringBuilder str1 = new SpannableStringBuilder(content.getText().toString());
str1.setSpan(new android.text.style.StyleSpan(android.graphics.Typeface.BOLD), startSelection, endSelection, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
content.setText(str1);
iii> 现在用户修改原始字符串。 让我们假设新字符串是
例如:aaaaaa bbbbbbbbb ccccccccccccc dddddddddd
现在用户想要在子字符串“ddddddddd”上应用下划线样式 现在,在 underline 之前,使用以下代码从 EditText 获取当前文本: content.getText()
问题是使用 content.getText() 获取的文本不包含已应用于子字符串“bbbbbbbbb”的 BOLD 样式。
基本上要求是通过选择对句子中的单个字符/单词应用不同的样式(粗体/斜体)。句子的修改(添加/删除字符/单词)也是可能的。
如何解决问题?
【问题讨论】:
标签: android