如何使用xamarin在字符串中放置私有使用字符

本文关键字:字符 xamarin 何使用 字符串 | 更新日期: 2023-09-27 17:51:00

我想在我的Xamarin项目上使用metro字体(http://metroui.org.ua/font.html)的一些图标,我找不到一个解决方案来把一个字符放在我的字符串上私人使用,它总是被一个?里面的正方形代替。

如果有人知道我怎么放特殊字符,它真的可以帮助我!

如何使用xamarin在字符串中放置私有使用字符

在Android中你需要一个自定义渲染器。其余的应该可以在盒子里工作。这个例子使用了FontAwesome,但应该也适用于你的。

首先让我们确保你的字体以正确的方式包含。

在Android的情况下,你需要把字体放在你的Assets文件夹中,并标记为BundleAsset

在iOS的情况下,将其复制到资源文件夹,并将其标记为BundleResource,并将其设置为' copy Always'。最后编辑信息。plist和add

 <key>UIAppFonts</key>
 <array>
   <string>FontAwesome.ttf</string>
</array>

那么Android的自定义渲染器将看起来像这样:

[assembly: ExportRenderer(typeof(FontAwesomeIcon), typeof(FontAwesomeIconRenderer))]
namespace AAA.Android.Renderers
{
    /// <summary>
    /// Add the FontAwesome.ttf to the Assets folder and mark as "Android Asset"
    /// </summary>
   public  class FontAwesomeIconRenderer: LabelRenderer
    {
       protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
       {
           base.OnElementChanged(e);
           if (e.OldElement == null)
           {
               //The ttf in /Assets is CaseSensitive, so name it FontAwesome.ttf
               Control.Typeface = Typeface.CreateFromAsset(Forms.Context.Assets, FontAwesomeIcon.Typeface + ".ttf");
           }
       }
    }
}

下面是它的自定义标签实现:

namespace AAA.Common.Views.Shared.FontAwesome
{
    public class FontAwesomeIcon : Label
    {
        //Must match the exact "Name" of the font which you can get by double clicking the TTF in Windows
        public const string Typeface = "FontAwesome";  
        public FontAwesomeIcon(string fontAwesomeIcon=null)
        {
            FontFamily = Typeface;    //iOS is happy with this, Android needs a renderer to add ".ttf"
            Text = fontAwesomeIcon;
        }
        /// <summary>
        /// Get more icons from http://fortawesome.github.io/Font-Awesome/cheatsheet/
        /// Tip: Just copy and past the icon picture here to get the icon
        /// </summary>
        public static class Icon
        {
            public static readonly string Gear = "";
            public static readonly string Globe = "";
        }
    }
}

在静态类Icon中,您可以添加想要使用的图标。你还可以在这里找到一个ascii码列表,而不是奇怪的问号图标。