如何修改 Shell 中的图片以显示通知标志?
How to modify picture in Shell to show notification badge?
目前我正在 Visual Studio 2019 年使用 Xamarin 开发我的第一个跨平台移动应用程序。
我使用带有导航图标的 shell(非常基本)。
我的下一个挑战:如果有新的通知,相应的导航点上方会出现一个红色的气泡。
它应该包括新通知的数量。
示例:
如果没有通知,就不会有气泡。
我试图通过生成一个包含正确数字的 png 来解决它,但是这种方式似乎很慢并且需要花费很多时间来开发。
我觉得应该有任何内置的方法来添加此行为。
我很高兴收到任何建议,在此先感谢!
编辑:
我使用的代码基本上来自visual studio示例。
我有一个文件AppShell.xaml:
<Shell.Resources>
<ResourceDictionary>
<Color x:Key="NavigationPrimary">#2196F3</Color>
<Style x:Key="BaseStyle" TargetType="Element">
<Setter Property="Shell.BackgroundColor" Value="{StaticResource NavigationPrimary}" />
<Setter Property="Shell.ForegroundColor" Value="White" />
<Setter Property="Shell.TitleColor" Value="White" />
<Setter Property="Shell.DisabledColor" Value="#B4FFFFFF" />
<Setter Property="Shell.UnselectedColor" Value="#95FFFFFF" />
<Setter Property="Shell.TabBarBackgroundColor" Value="{StaticResource NavigationPrimary}" />
<Setter Property="Shell.TabBarForegroundColor" Value="White"/>
<Setter Property="Shell.TabBarUnselectedColor" Value="#95FFFFFF"/>
<Setter Property="Shell.TabBarTitleColor" Value="White"/>
</Style>
<Style TargetType="TabBar" BasedOn="{StaticResource BaseStyle}" />
</ResourceDictionary>
</Shell.Resources>
<!-- Your Pages -->
<TabBar>
<Tab Title="Browse" Icon="tab_feed.png">
<ShellContent ContentTemplate="{DataTemplate local:ItemsPage}" />
</Tab>
<Tab Title="About" Icon="tab_about.png">
<ShellContent ContentTemplate="{DataTemplate local:AboutPage}" />
</Tab>
<Tab Title="Info" Icon="tab_about.png">
<ShellContent ContentTemplate="{DataTemplate local:InfoPage}" />
</Tab>
</TabBar>
您可以使用 XamarinCommunityToolkit 包中的 BadgeView
,如下所示:
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
...
<xct:BadgeView BackgroundColor="Red" BadgePosition="TopRight" BorderColor="Transparent"
Text="{Binding BadgeCount}" FontSize="10" Padding="0" TextColor="White">
<Image Source="Bell.png" xct:IconTintColorEffect.TintColor="blue"/>
</xct:BadgeView>
这里最重要的是 Text
属性,它绑定到 int
类型的 BadgeCount
,这当然代表了徽章中显示的数字。
当它等于 0 时,徽章会自动变得不可见,一旦值为 >0,它就会再次出现,所以请确保它不会消失 <0 除非是您的要求。
作为旁注,您可以自定义徽章选项:BadgePosition
、FontSize
、FontAttributes
、BorderColor
、HasShadow
...
对于任何对此包感兴趣或好奇的人,XamarinCommunityToolkit GitHub Repo
中都有一个示例项目
目前我正在 Visual Studio 2019 年使用 Xamarin 开发我的第一个跨平台移动应用程序。 我使用带有导航图标的 shell(非常基本)。
我的下一个挑战:如果有新的通知,相应的导航点上方会出现一个红色的气泡。
它应该包括新通知的数量。
示例:
如果没有通知,就不会有气泡。 我试图通过生成一个包含正确数字的 png 来解决它,但是这种方式似乎很慢并且需要花费很多时间来开发。
我觉得应该有任何内置的方法来添加此行为。 我很高兴收到任何建议,在此先感谢!
编辑:
我使用的代码基本上来自visual studio示例。
我有一个文件AppShell.xaml:
<Shell.Resources>
<ResourceDictionary>
<Color x:Key="NavigationPrimary">#2196F3</Color>
<Style x:Key="BaseStyle" TargetType="Element">
<Setter Property="Shell.BackgroundColor" Value="{StaticResource NavigationPrimary}" />
<Setter Property="Shell.ForegroundColor" Value="White" />
<Setter Property="Shell.TitleColor" Value="White" />
<Setter Property="Shell.DisabledColor" Value="#B4FFFFFF" />
<Setter Property="Shell.UnselectedColor" Value="#95FFFFFF" />
<Setter Property="Shell.TabBarBackgroundColor" Value="{StaticResource NavigationPrimary}" />
<Setter Property="Shell.TabBarForegroundColor" Value="White"/>
<Setter Property="Shell.TabBarUnselectedColor" Value="#95FFFFFF"/>
<Setter Property="Shell.TabBarTitleColor" Value="White"/>
</Style>
<Style TargetType="TabBar" BasedOn="{StaticResource BaseStyle}" />
</ResourceDictionary>
</Shell.Resources>
<!-- Your Pages -->
<TabBar>
<Tab Title="Browse" Icon="tab_feed.png">
<ShellContent ContentTemplate="{DataTemplate local:ItemsPage}" />
</Tab>
<Tab Title="About" Icon="tab_about.png">
<ShellContent ContentTemplate="{DataTemplate local:AboutPage}" />
</Tab>
<Tab Title="Info" Icon="tab_about.png">
<ShellContent ContentTemplate="{DataTemplate local:InfoPage}" />
</Tab>
</TabBar>
您可以使用 XamarinCommunityToolkit 包中的 BadgeView
,如下所示:
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
...
<xct:BadgeView BackgroundColor="Red" BadgePosition="TopRight" BorderColor="Transparent"
Text="{Binding BadgeCount}" FontSize="10" Padding="0" TextColor="White">
<Image Source="Bell.png" xct:IconTintColorEffect.TintColor="blue"/>
</xct:BadgeView>
这里最重要的是 Text
属性,它绑定到 int
类型的 BadgeCount
,这当然代表了徽章中显示的数字。
当它等于 0 时,徽章会自动变得不可见,一旦值为 >0,它就会再次出现,所以请确保它不会消失 <0 除非是您的要求。
作为旁注,您可以自定义徽章选项:BadgePosition
、FontSize
、FontAttributes
、BorderColor
、HasShadow
...
对于任何对此包感兴趣或好奇的人,XamarinCommunityToolkit GitHub Repo
中都有一个示例项目