Xamarin Forms: встраивание символов в текст
в настоящее время я оцениваю формы Xamarin как альтернативу нашим веб-приложениям HTML для мобильных платформ.
наши приложения часто используют графические символы, встроенные в абзацы текста. Желаемый эффект выглядит так:
конечно, текст также должен иметь возможность свободно обертываться, включая все символы. в HTML это просто достигается, как это:
<p>Sample text with <img src="sample.jpg"> embedded</p>
Как я могу достичь того же эффекта, используя Xamarin форм? Я уже смотрел на FormattedStrings, которые позволяют форматировать подпункты меток, однако они, похоже, не позволяют вставлять изображения.
Также обратите внимание, что решение требуется для поддержки iOS, Android и Windows Phone 8.1 по крайней мере.
2 ответов
В настоящее время единственный способ иметь символы и изображения в текстовых блоках-использовать 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;
очевидно, вынужден использовать WebView
почти побеждает точку перемещения приложения HTML5 в Xamarin!
на форумах Xamarin был задан аналогичный вопрос:https://forums.xamarin.com/discussion/1649/text-with-image
чтобы решить проблему, Томаш Челецки приготовил здесь пример кода:https://gist.github.com/Cheesebaron/5034440
затем он пошел в блог об этом здесь: http://blog.ostebaronen.dk/2013/02/adding-images-to-textview-and-edittext.html
Я начал с супер простого образца, пытаясь получить изображение, показанное в TextView. Я погуглил некоторые решения и уверен, что Spannables позволяют использовать ImageSpan внутри них! Там были хорошие образцы, и я придумал это.
ImageSpan в TextView
//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, таких как StyleSpan, которые вы можете стилизовать своими шрифтами с полужирным шрифтом, курсивом и другими стилями.
Так как это было так просто, я быстро попытался сделать это с помощью EditText. Он также работает просто отлично...