我试图在EditText控件中呈现一个html字符串。粗体,斜体和下划线html正确呈现,但是直接通过被忽略。
这是EditText控件,没什么特别的:
iframe.contentWindow.history.go(-1);
iframe.contentWindow.history.go(1);
以下是在EditText控件中设置html的代码:
iframe.contentWindow.history.go(-1);
iframe.contentWindow.history.go(1);
以下是它如何显示的屏幕截图,注意通过测试的罢工是如何工作的。
任何想法我做错了什么?
答案 0 :(得分:5)
以下是我解决问题的方法。我创建了一个ITagHandler的实现:
public class HtmlTagHandler : Object, Html.ITagHandler {
public void HandleTag (bool opening, string tag, IEditable output, IXMLReader xmlReader) {
if (tag == "strike" || tag == "s" || tag == "del") {
var text = output as SpannableStringBuilder;
if (opening)
Start (text, new Strike ());
else
End (text, Class.FromType (typeof(Strike)), new StrikethroughSpan ());
}
}
private static void Start (SpannableStringBuilder text, Object mark) {
var length = text.Length ();
text.SetSpan (mark, length, length, SpanTypes.MarkMark);
}
private static void End (SpannableStringBuilder text, Class kind, Object newSpan) {
var length = text.Length ();
var span = GetLast (text, kind);
var where = text.GetSpanStart (span);
text.RemoveSpan (span);
if (where != length)
text.SetSpan (newSpan, where, length, SpanTypes.ExclusiveExclusive);
}
private static Object GetLast (ISpanned text, Class kind) {
var length = text.Length ();
var spans = text.GetSpans (0, length, kind);
return spans.Length > 0 ? spans.Last () : null;
}
}
class Strike : Object {
}
这可以像这样调用:
public static ISpanned ToHtml (this string html) {
return Html.FromHtml (html ?? string.Empty, null, new HtmlTagHandler ());
}
以下是它的外观:
答案 1 :(得分:4)
<strike>
不受支持。我找不到包含所有支持的HTML标记列表的官方文档。但是,如果你看一下源代码,你就不会在那里找到支持。
我可以收集以下标签:
Tags Format
b, strong Bold
i, em, cite, dfn Italics
u Underline
sub Subtext
sup Supertext
big Big
small Small
tt Monospace
h1 … h6 Headlines
img Image
font Font face and color
blockquote For longer quotes
a Link
div, p Paragraph
br Linefeed