如何在 xamarin 表单中显示 html 格式的文本

Posted

技术标签:

【中文标题】如何在 xamarin 表单中显示 html 格式的文本【英文标题】:How can I show text with html format in xamarin forms 【发布时间】:2016-02-02 19:36:39 【问题描述】:

我使用 json 处理 web 服务,我得到了 html 格式的文本。我希望我的文本有超链接和一些其他属性,我可以从 html 标签(等粗体)中找到。

我尝试在 WebView 源中绑定我的 html 字符串,但 WebView 每次都是空白的。我用这个代码

var browser = new WebView();
var htmlSource = new HTMLWebViewSource();
htmlSource.Html = MyItem.Article;
browser.Source = htmlSource;

MyItem.Article 字符串是这样的

我想在 Label 里面有这样的东西,在 ListView os 里面是这样的东西。

我该怎么做?

【问题讨论】:

看看this article,有帮助吗? 我使用 xamarin 表单(iosandroid),这仅适用于 android 【参考方案1】:

这应该适合你

string htmlText = MyItem.Article.ToString().Replace(@"\", string.Empty);
var browser = new WebView ();
var html = new HtmlWebViewSource 
  Html = htmlText
;
browser.Source = html;

因为Xamarin.Forms.HtmlWebViewSource.HTML 期望纯 HTML。使用它,您可以在本文http://blog.falafel.com/creating-reusable-xaml-user-controls-xamarin-forms/ Cheers..的帮助下创建一个 Xamarin.Forms 用户控件。

【讨论】:

【参考方案2】:

在 XAML 中,您可以执行以下操作:

<WebView>
   <WebView.Source>
      <HtmlWebViewSource Html="Binding HtmlText"/>
   </WebView.Source>
</WebView>

如果WebView 不在Grid 内,您可能还需要提供高度和宽度。

【讨论】:

我相信这是我看到的第一个将 WebView 声明添加到 XAML 的示例 - 在阅读了 Microsoft Docs 上 Xamarin.Forms 的一些文档之后。当然有帮助【参考方案3】:

仅供参考,我刚刚向我的Forms9Patch library 添加了创建标签和按钮的功能,您可以在其中通过 HTML 格式化文本。例如:

new Forms9Patch.Label  HtmlText =  "plain <b><i>Bold+Italic</i></b> plain"

... 会给你一个标签,其中文本在字符串中间被格式化为粗斜体。

另外,顺便说一句,它允许您在 PCL 项目中使用嵌入资源的自定义字体,而无需任何特定于平台的工作。而且,您可以通过 HTLM &lt;font&gt; 标签或 HTML font-family 属性使用这些字体。

以下是demo app的一些屏幕截图:

【讨论】:

如果它是一个解决方案,为什么不呢 Forms9Patch 不再是商业产品。它现在是 MIT License 开源,不需要许可证。话虽如此,我仍然同意尼克的观点。 @baskren 我在哪里可以找到 MIT 许可源?因为我能找到的都是商业的 github:github.com/baskren/Forms9Patch;比特桶:bitbucket.org/baskren/forms9patch2;请注意,文档正在进行中。 这看起来很有帮助。 Windows 和 OS X 上 VS 的初始演练文档提供了一个很好的介绍 baskren.github.io/Forms9Patch/guides 它当然可以用于在 RSS 聚合流中发布的 HTML 内容。如果 Xamarin 还没有注意到这个项目,因为与 Xamarin.Forms VS 支持捆绑在一起,这很惊讶。也许可以修补原始 Xamarin.Forms VS 项目模板,使其更容易上手【参考方案4】:
<pre>
    <WebView VerticalOptions="FillAndExpand">
         <WebView.Source>
              <HtmlWebViewSource Html="Binding HtmlText"/>
         </WebView.Source>
    </WebView>
</pre>

【讨论】:

虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。

以上是关于如何在 xamarin 表单中显示 html 格式的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在一个 Xamarin 表单标签中有 2 个数据绑定字段?

如何在一个Xamarin表单标签中有2个数据绑定字段?

使用 Xamarin 表单选择产品时如何显示产品详细信息

如何在 Xamarin 表单中创建半屏相机视图

Xamarin 表单 UWP - 显示 PDF

如何将标签更改为与在 Xamarin 表单上显示通知相同的布局?