使用HTML标记显示文本

问题描述 投票:1回答:1

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

html xamarin webview xamarin.android label
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.