//in string.xml file
<string name="welcome_text"><![CDATA[<b>Welcome,</b> to the forthetyroprogrammers blog Logged in as:]]> %1$s.</string>
//and in Java code
String welcomStr=String.format(getString(R.string.welcome_text),username);
tvWelcomeUser.setText(Html.fromHtml(welcomStr));
Spanned fromHtml = HtmlCompat.fromHtml(context, source, 0);
// You may want to provide an ImageGetter, TagHandler and SpanCallback:
//Spanned fromHtml = HtmlCompat.fromHtml(context, source, 0,
// imageGetter, tagHandler, spanCallback);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(fromHtml);
18 回答
如果你想通过xml配置它而不需要在java代码中进行任何修改,你会发现这个想法很有帮助 . 只需从构造函数中调用init,并将文本设置为html
XML:
我已经使用Web视图实现了这一点 . 在我的情况下,我必须从URL加载图像以及文本视图中的文本,这对我有用 .
如果你只想显示一些html文本并且不需要
TextView
,那么请使用WebView
并使用它如下:这也不会限制你使用几个html标签 .
制作一个全局方法,如:
您也可以在Activity / Fragment中使用它,如:
如果您尝试从字符串资源ID显示HTML,格式可能不会显示在屏幕上 . 如果发生这种情况,请尝试使用CDATA标签:
...
有关详细信息,请参阅post .
以下代码为我提供了最好的结果 .
对strings.xml文件中的字符串使用CData部分以获取html内容到TextView的实际显示的最佳方法,下面的代码片段将为您提供合理的想法 .
即使在使用String.format方法格式化文本之后,字符串文本中的CData部分也使html标记数据保持不变 . 因此,Html.fromHtml(str)工作正常,您将在欢迎消息中看到粗体文本 .
Output:
我还想建议以下项目:https://github.com/NightWhistler/HtmlSpanner
用法几乎与默认的android转换器相同:
在我已经开始通过自己实现的html到spannable转换器之后找到它,因为标准的Html.fromHtml没有提供足够的渲染控制灵活性,甚至没有可能使用来自ttf的自定义字体
在api 24之后 setText(Html.fromHtml(bodyData)) 是 deprecated . 现在你必须这样做:
值得一提的是,从API级别24开始,方法Html.fromHtml(String source)已被弃用 . 如果这是您的目标API,则应使用Html.fromHtml(String source, int flags) .
我可以建议一个有点hacky但仍然天才的解决方案!我从this article得到了这个想法,并将其改编为Android . 基本上,您使用
WebView
并在可编辑的div标签中插入要显示和编辑的HTML . 这样,当用户点击WebView
时,键盘出现并允许编辑 . 他们只是添加一些JavaScript来取回已编辑的HTML并瞧!这是代码:
并且here是作为要点的组件 .
注意:我不需要原始解决方案中的高度更改回调,因此在此处缺少,但您可以根据需要轻松添加 .
您需要使用Html.fromHtml()在XML字符串中使用HTML . 简单地在布局XML中引用带有HTML的String将不起作用 .
这是你应该做的:
简单使用
Html.fromHtml("html string")
. 这会奏效 . 如果字符串有像<h1>
这样的标签,那么就会出现空格 . 但我们无法消除这些空间 . 如果您仍想删除空格,则可以删除字符串中的标记,然后将字符串传递给方法Html.fromHtml("html string");
. 通常这些字符串来自服务器(动态)但不经常,如果最好将字符串传递给方法,而不是尝试从字符串中删除标记 .已经通过各种答案建议使用这里建议的Html框架类,但不幸的是,这个类在Android的不同版本和各种未解决的错误中具有不同的行为,如问题214637,14778,235128和75953中所示 .
因此,您可能希望使用兼容性库来标准化和反向移植Android版本的Html类,其中包括更多元素和样式的回调:
虽然它类似于框架的Html类,但是需要一些签名更改才能允许更多的回调 . 以下是GitHub页面中的示例:
看看这个:https://stackoverflow.com/a/8558249/450148
这也很不错!!
它仅适用于少数标签 .
每当你编写自定义文本视图时,基本的HTML设置文本功能都会从某些设备中消失 .
所以我们需要做以下的附加步骤make is work