spanned = Html.fromHtml("<sup>aaa</sup>bbb<sub>ccc</sub><b>ddd</b>");将创建一个具有3跨aaa、ccc、ddd的跨对象。
bbb被忽略了,因为它不在html标记中,
spans = spanned.getSpans(0, spanned.length(), Object.class);将只识别3个跨度。
我需要一种方法来提取代码的所有4部分,如果可能的话,可以提取到某种数组中,这样我就可以识别每个跨度的类型。
发布于 2013-10-13 13:14:18
我需要一种方法来提取代码的所有4部分。
nextSpanTransition()来找到下一个跨度的起点。初始位置之间的字符(nextSpanTransition()的第一个参数)和下一个跨度之间的字符表示一个未跨越的文本部分。
您可以通过查看 class来查看此操作。
发布于 2013-10-13 13:09:12
‘'bbb’不是html标签中的那个。尽管我想这是不会被错过的。“‘ccc”是一个下标,它可能是呈现的,但对您来说是不可见的。如果您限制了文本视图的高度,尝试增加它的高度。
发布于 2013-10-13 13:37:33
使用此http://developer.android.com/reference/android/text/Html.html#fromHtml(java.lang.String,为ImageGetter和自定义TagHandler传递null
见示例
String source = "<b>bold</b> <i>italic</i> <unk>unknown</unk>";
TagHandler tagHandler = new TagHandler() {
Stack<Integer> starts = new Stack<Integer>();
@Override
public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
if (tag.equals("unk")) {
if (opening) {
starts.add(output.length());
} else {
int start = starts.pop();
int end = output.length();
Object what = new Object();
output.setSpan(what, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
};
Spanned spanned = Html.fromHtml(source, null, tagHandler);
TextUtils.dumpSpans(spanned, new LogPrinter(Log.DEBUG, TAG), "span ");https://stackoverflow.com/questions/19345539
复制相似问题