如何使用 xamarin 将私有字符放入字符串中
how to put a private use character in string with xamarin
我想在我的 Xamarin 项目中使用 metro 字体 (http://metroui.org.ua/font.html) 中的一些图标,我找不到在我的字符串上放置私有字符的解决方案,它总是被替换为里面有一个 ?
的正方形。
如果有人知道我如何输入特殊字符,那对我真的很有帮助!
在 Android 中,您将需要一个自定义渲染器。其余的应该开箱即用。 This example 使用 FontAwesome,但也应该适用于您的。
首先让我们确保以正确的方式包含您的字体。
在 Android 的情况下,您需要将字体放入您的资产文件夹并将其标记为 BundleAsset
。
在iOS的情况下,将其复制到Resources文件夹并将其标记为BundleResource
并将其设置为'Copy Always'。最后编辑 info.plist 并添加
<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 = "";
}
}
}
在静态中class Icon
你可以添加你想使用的图标。
另外 here 您可以找到一个 ascii 代码列表,而不是奇怪的问号图标。
我想在我的 Xamarin 项目中使用 metro 字体 (http://metroui.org.ua/font.html) 中的一些图标,我找不到在我的字符串上放置私有字符的解决方案,它总是被替换为里面有一个 ?
的正方形。
如果有人知道我如何输入特殊字符,那对我真的很有帮助!
在 Android 中,您将需要一个自定义渲染器。其余的应该开箱即用。 This example 使用 FontAwesome,但也应该适用于您的。
首先让我们确保以正确的方式包含您的字体。
在 Android 的情况下,您需要将字体放入您的资产文件夹并将其标记为 BundleAsset
。
在iOS的情况下,将其复制到Resources文件夹并将其标记为BundleResource
并将其设置为'Copy Always'。最后编辑 info.plist 并添加
<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 = "";
}
}
}
在静态中class Icon
你可以添加你想使用的图标。
另外 here 您可以找到一个 ascii 代码列表,而不是奇怪的问号图标。