Dot*_*ser 0 xamarin.forms android-toolbar
我在应用程序中使用了导航页面。我必须将字体图标设置为工具栏项。但它显示十字符号,因为我尚未设置字体系列。所以有人建议我可以在工具栏项中设置字体图标。
使用Xamarin Forms 4.x(如果我没有记错版本的话),他们添加了可以在ToolbarItems上使用的FontImageSource类型。您需要做的几件事...
将字体文件添加到您的平台项目。在Android上,将它们添加到Assets文件夹中,并将构建操作设置为AndroidAsset。在iOS上,将它们添加到Resources文件夹中,并将构建操作设置为BundleResource。同样在iOS上,编辑info.plist并添加
<key>UIAppFonts</key>
<array>
<string>fontname.ttf</string>
<string>fontname2.ttf</string>
...
</array>
Run Code Online (Sandbox Code Playgroud)
现在Xamarin可以使用字体了。
我定义了一些应用程序资源来轻松加载字体:
<OnPlatform x:Key="FontAwesomeLightFontFamily" x:TypeArguments="x:String">
<On Platform="Android" Value="fa-light-300.ttf#Font Awesome 5 Pro Light" />
<On Platform="iOS" Value="FontAwesome5Pro-Light" />
</OnPlatform>
<OnPlatform x:Key="FontAwesomeRegularFontFamily" x:TypeArguments="x:String">
<On Platform="Android" Value="fa-regular-400.ttf#FontAwesome5ProRegular" />
<On Platform="iOS" Value="FontAwesome5ProRegular" />
</OnPlatform>
<OnPlatform x:Key="FontAwesomeSolidFontFamily" x:TypeArguments="x:String">
<On Platform="Android" Value="fa-solid-900.ttf#FontAwesome5ProSolid" />
<On Platform="iOS" Value="FontAwesome5ProSolid" />
</OnPlatform>
Run Code Online (Sandbox Code Playgroud)
那是坐在资源字典中,该资源字典已合并到App.xaml资源中。
现在,当我要将字体图标用作工具栏图标图像源时,可以执行以下操作:
<Page.ToolbarItems>
<ToolbarItem Command="{Binding SomeCommand}">
<ToolbarItem.IconImageSource>
<FontImageSource
FontFamily="{StaticResource FontAwesomeSolidFontFamily}"
Glyph="{x:Static fonts:FontAwesomeIcon.Cog}"
Size="{StaticResource ToolbarIconImageSourceSize}" />
</ToolbarItem.IconImageSource>
</ToolbarItem>
</Page.ToolbarItems>
Run Code Online (Sandbox Code Playgroud)
如果您希望静态类定义字形图标,而不是必须输入unicode(上面的字形中使用了我的FontAwesomeIcon类),则https://andreinitescu.github.io/IconFont2Code/上有一个很棒的工具,它将生成一个基于上传的字体文件的C#静态类。最终看起来像
public static class FontAwesomeIcon
{
public const string Abacus = "\uf640";
public const string Ad = "\uf641";
public const string AddressBook = "\uf2b9";
public const string AddressCard = "\uf2bb";
public const string Adjust = "\uf042";
public const string AirFreshener = "\uf5d0";
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
412 次 |
| 最近记录: |