使用 Xamarin Forms 5 开发 Xamarin 应用程序,并使用 Shell 进行导航。
选择选项卡后,是否可以将图标的颜色更改为与其下方文本相同的颜色?图标是材料设计字体。
我尝试使用TabBarTitleColor
,它会更改选定选项卡的文本颜色。设置图标颜色效果很好TabBarUnselectedColor
(可以通过第二张图片中的绿色图标看到)。但是我不能让图标在被选中时改变颜色。
<Shell.Resources>
<ResourceDictionary>
<Style x:Key="BaseStyle" TargetType="Element">
<Setter Property="Shell.TabBarBackgroundColor"
Value="White" />
<Setter Property="Shell.TabBarForegroundColor"
Value="White" />
<Setter Property="Shell.TabBarUnselectedColor"
Value="Green" />
<Setter Property="Shell.TabBarTitleColor"
Value="Gold" />
</Style>
<Style TargetType="TabBar"
BasedOn="{StaticResource BaseStyle}">
</Style>
</ResourceDictionary>
</Shell.Resources>
<TabBar>
<Tab Title="Exchange" Route="exchange">
<Tab.Icon>
<FontImageSource FontFamily="{StaticResource MaterialFontFamily}" Glyph="{x:Static helpers:IconFont.Earth}" Size="24"/>
</Tab.Icon>
<ShellContent ContentTemplate="{DataTemplate views:ExchangeBasePage}" Route="exchangeBase" />
</Tab>
<Tab Title="Meet" Route="meet">
<Tab.Icon >
<FontImageSource FontFamily="{StaticResource MaterialFontFamily}" Glyph="{x:Static helpers:IconFont.AccountMultipleOutline}" Size="24"/>
</Tab.Icon>
<ShellContent ContentTemplate="{DataTemplate views:MembersListPage}" Route="members" />
</Tab>
</TabBar>
更新
我尝试使用 Font Awesome Icons,但得到的是有趣的字符而不是图标,而且它们也没有改变颜色。
将 Font Awesome otf 文件添加到共享资源中,将构建操作标记为 Embedded Resource。
在组装信息中:
[assembly: ExportFont("Font-Awesome-5-Brands-Regular-400.otf", Alias = "FontAwesome")]
[assembly: ExportFont("Font-Awesome-5-Free-Regular-400.otf", Alias = "FontAwesome2")]
[assembly: ExportFont("Font-Awesome-5-Free-Solid-900.otf", Alias = "FontAwesome3")]
<TabBar >
<Tab Title="Share" Route="exchange" >
<Tab.Icon>
<FontImageSource FontFamily="Font-Awesome-5-Free-Solid-900.otf" Glyph="" Size="24"/>
</Tab.Icon>
<ShellContent ContentTemplate="{DataTemplate views:ExchangeBasePage}" Route="exchangeBase" />
</Tab>
更新 2
尝试FontFamily
更改为三个不同的别名(例如 FontAwesome3),同样的问题。试图通过将字形作为普通页面上的文本放入标签中来查看是否存在问题TabBar Tab.Icon
,但结果是相同的字符。
<Label Text="" FontFamily="FontAwesome2" FontSize="Header" TextColor="White"/>