Xamarin UWP上的黑/白图标

时间:2018-03-13 22:32:35

标签: xamarin.forms xamarin.uwp

我在工具栏中显示图标时遇到问题。 在Android上,它工作正常,但在UWP上图标是白色的,当你悬停时它是黑色的。 你知道怎么解决吗?

机器人: enter image description here

UWP: enter image description here

我的代码:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="VwDemo.LoginPage"
             Title="Logowanie">
    <ContentPage.ToolbarItems>
        <ToolbarItem Icon="VwLogo.png" />
    </ContentPage.ToolbarItems>
    <ContentPage.Content>
        <StackLayout VerticalOptions="StartAndExpand" Margin="10,10,10,0">
            <Label Text="Login" />
            <Entry x:Name="LoginEntry" Placeholder="Login"/>
            <Label Text="Hasło" />
            <Entry x:Name="PasswordEntry" IsPassword="True" Placeholder="Hasło" />
            <Button Text="Zaloguj" Clicked="OnLoginButtonClicked" BackgroundColor="#FF3579B4" TextColor="#FFFBF8F8" />
            <Label x:Name="MessageLabel" HorizontalTextAlignment="Center" TextColor="Red" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

2 个答案:

答案 0 :(得分:0)

  

我在工具栏中显示图标时遇到问题。在Android上,它工作正常,但在UWP上图标是白色的,当你悬停时它是黑色的。你知道怎么解决吗?

问题是ToolbarItem对应的本地控制是AppBarButtonAppBarButton使用BitmapIcon作为自定义图标。

<CommandBar  Background="Transparent" IsOpen="False">
     <AppBarButton  Label="BitmapIcon">
         <AppBarButton.Icon>
             <BitmapIcon UriSource="ms-appx:///DA.png" />
         </AppBarButton.Icon>
     </AppBarButton>
 </CommandBar>

如果您将图片文件来源传递给ToolbarItem,则会在UWP中使用BitmapIcon进行呈现。但是,BitmapIcon文件的限制很少。

  

您使用的文件应该是透明背景上的纯色图像。从UriSource位置检索的位图图像应该是具有透明像素和非透明像素的真实位图。推荐的格式是PNG。

有关详情,请参阅此Remark

答案 1 :(得分:0)

我已经对这个问题进行了一些挖掘,我认为你不会像其他平台那样得到结果。这是因为UWP按照设计显示带有色调的工具栏项。 AppBarButtonToolbarItemCheck UpdateToolbarItems method)的Xamarin.Forms表示形式,具有以下XAML样式XAML styles docs。在这些样式的ContentPresenter部分中,您可以看到有一个Foreground属性,它是工具栏项的色调。

例如,这个UWP代码( Xamarin.Forms):

TopAppBar = new CommandBar();
(TopAppBar as CommandBar).PrimaryCommands.Add(new AppBarButton()
{
    Foreground = new SolidColorBrush(Colors.Aqua),
    Icon = new BitmapIcon()
    {           
        UriSource = new Uri("ms-appx:///Assets/StoreLogo.png")
    },
    Label = "AAA"
});

将产生以下结果。如您所见,Foreground属性负责着色图像

enter image description here

没有办法 - 至少我不知道 - 您可以使用ToolbarItem(又名AppBarButton)来显示图像,而不是它具有某种颜色/色调。如果您仍希望实现此类效果,则可能需要创建自己的CommandBar版本。

您可以做的是更改您用于该大众徽标的图像。使其透明(即从中删除蓝色背景)