Xamarin表单:在文本中嵌入符号

时间:2016-01-08 23:05:37

标签: c# mobile xamarin.forms

我目前正在评估Xamarin Forms作为我们针对移动平台的基于网络的HTML应用程序的替代方案。

我们的应用程序通常使用嵌入文本段落中的图形符号。 期望的效果如下所示:

Example

当然,文本也必须能够自由环绕,包括所有符号。在HTML中,这可以简单地实现:

<p>Sample text with <img src="sample.jpg"> embedded</p>

如何使用Xamarin Forms实现相同的效果?我已经看过FormattedStrings,它允许格式化标签的子段,但它们似乎不允许嵌入图像。

另请注意,该解决方案至少需要支持iOS,Android和Windows Phone 8.1。

2 个答案:

答案 0 :(得分:4)

显然被迫使用WebView几乎无法将HTML5应用移动到Xamarin!

在Xamarin论坛中,我们提出了类似的问题:https://forums.xamarin.com/discussion/1649/text-with-image

解决问题Tomasz Cielecki在这里编写了一些示例代码:https://gist.github.com/Cheesebaron/5034440

然后他在博客上写了这篇文章: http://blog.ostebaronen.dk/2013/02/adding-images-to-textview-and-edittext.html

&LT;剪断&GT;

  

我从一个超级简单的示例开始尝试获取TextView中显示的图像。我搜索了一些解决方案,确定,Spannables允许使用ImageSpan!有很好的样品等等,我想出了这个。

TextView中的ImageSpan

//Load up your drawable.
var imageSpan = new ImageSpan(this, Resource.Drawable.Icon);
//Set the text of SpannableString from TextView
var spannableString = new SpannableString(textView.Text);
//Add image at end of string
spannableString.SetSpan(imageSpan, textView.Text.Length-1, textView.Text.Length, 0);
  

很简单,对吧?并且您可以向Spannable添加其他Spans的大量内容,例如StyleSpan,您可以使用粗体,斜体和其他样式设置字体样式。

     

由于这很容易,我很快就尝试使用EditText。它也可以正常工作......

&LT; /剪断&GT;

答案 1 :(得分:1)

目前,在文本块中包含符号和图像的唯一方法是使用WebView(https://developer.xamarin.com/guides/xamarin-forms/working-with/webview/

var browser = new WebView();
var htmlSource = new HtmlWebViewSource ();
htmlSource.Html = @"<html><body>
    <h1>Xamarin.Forms</h1>
    <p>Welcome to WebView.</p>
    </body></html>";
browser.Source = htmlSource;