使用HTML标记显示文本

时间:2018-03-15 06:53:34

标签: html xamarin webview xamarin.android label

我需要在页面上显示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代码?

1 个答案:

答案 0 :(得分:2)

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 googletext-align应为end而不是right。适用于p, h1, h2, h3, h4, h5, h6, div, blockquote