2017-07-14 96 views
-2

Hello数据配合上的EditText的HTML,如何呈现的Android

当我试图更改为HTML并呈现相同的上它不工作精细的EditText控制的字符串。

跨度不承认为一个HTML

<span style="font-weight: bold;">Bold</span> 
<div><span style="font-style: italic;">ITALIC</span></div> 
<div><span style="text-decoration-line: underline;">UNDERLINE</span></div> 
<div><span style="text-decoration-line: underline;"><br></span></div><div><ul><li>hieeeeeeeeeeeeee<br></li></ul></div> 

如何呈现的EditText给定的HTML。如果我谈论下面的HTML,它会得到渲染

<p dir="ltr">Testing<br> 
<b>Bold</b><br> 
<i>Italic</i><br> 
<u>Underline</u></p> 

由于跨度它没有得到渲染。

请帮助。任何建议

+0

选项#1:编写代码以将您收到的HTML转换为可由'Html.fromHtml()处理的HTML。选项2:编写代码来解析您收到的HTML,并用您自己的跨度生成自己的“Spanned”对象。 – CommonsWare

+0

你可以按照这个:https://stackoverflow.com/questions/2116162/how-to-display-html-in-textview – Paddy02

回答

0

由于EditText上从TextView的默认扩展它支持以下标签:

<a> 
<annotation> 
<b> 
<big> 
<font> 
<i> 
<li> 
<marquee> 
<small> 
<strike> 
<sub> 
<sup> 
<tt> 
<u> 

所以你<span>如果简单String

通过,但你可以使用HTML渲染它只是不能被渲染。 FromHtml()

String text = "<span style=\"font-weight: bold;\">Bold</span>"; 
if (Build.VERSION.SDK_INT >= 24) { 
    // for 24 api and more 
    editText.setText(Html.fromHtml(text , Html.FROM_HTML_MODE_LEGACY)) 
} else { 
    // or for older api 
    editText.setText(Html.fromHtml(text)) 
} 

Html.fromHtml supports following tags

<br> 
<p> 
<ul> 
<li> 
<div> 
<span> 
<strong> 
<b> 
<em> 
<cite> 
<dfn> 
<i> 
<big> 
<small> 
<font> 
<blockquote> 
<tt> 
<a> 
<u> 
<del> 
<s> 
<strike> 
<sup> 
<sub> 
<img>