我需要在页面上显示HTML
文本。尝试使用WebView,但它不能适合HTML
内容高度,它只有HeightRequest
。我为Label
创建了渲染器,以便在其中启用HTML
标记。
public class HtmlLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
Control?.SetText(Html.FromHtml(Element.Text), TextView.BufferType.Spannable);
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == Label.TextProperty.PropertyName)
{
Control?.SetText(Html.FromHtml(Element.Text), TextView.BufferType.Spannable);
}
}
}
它有效,但是当我的HTML
文本标记有text-align:right
时,HtmlLabel
没有显示它。当我使用WebView时,带有text-align:right
的标签会正确显示。
如何更新HtmlLabel
以正确显示text-align:right
标签?
TextView并不支持所有HTML标记。
根据a Commonsware's blog post,支持以下标记:
<a href="...">
<b>
<big>
<blockquote>
<br>
<cite>
<dfn>
<div align="...">
<em>
<font size="..." color="..." face="...">
<h1>
<h2>
<h3>
<h4>
<h5>
<h6>
<i>
<img src="...">
<p>
<small>
<strike>
<strong>
<sub>
<sup>
<tt>
<u>
虽然一些内联css样式也应该起作用。确保TextView足够宽,以便在右边显示文本。
根据这个unit test from google,text-align
应该是end
而不是right
。哪个适用于p, h1, h2, h3, h4, h5, h6, div, blockquote
。