首页 > 解决方案 > 使用 AppShell ContentPage 的页脚不是白色的,为什么?

问题描述

我使用 AppShell,就像我在这里展示流程一样

如何使用 AppShell 更改 Xamarin Forms ContentPage 中的状态栏?

此时我有一个与 ContentPage 的页脚相关的问题,应该是白色的,但不是,看这张图片

页脚应该是白色的

在我的代码中,我正在做:

BackgroundColor="White"
Shell.BackgroundColor="White"

怎么了?

我正在做这个 BaseStyle

   <Style x:Key="BaseStyle" TargetType="Element">
                <Setter Property="Shell.BackgroundColor" Value="{AppThemeBinding Dark={StaticResource Primary}, Light={StaticResource Primary}}" />
                <Setter Property="Shell.ForegroundColor" Value="{AppThemeBinding Dark=Black, Light=White}" />
                <Setter Property="Shell.TitleColor" Value="{AppThemeBinding Dark=Black, Light=White}" />
                <Setter Property="Shell.DisabledColor" Value="#B4FFFFFF" />
                <Setter Property="Shell.UnselectedColor" Value="#95FFFFFF" />
                <Setter Property="Shell.TabBarBackgroundColor" Value="{StaticResource Primary}" />
                <Setter Property="Shell.TabBarForegroundColor" Value="White" />
                <Setter Property="Shell.TabBarUnselectedColor" Value="#95FFFFFF" />
                <Setter Property="Shell.TabBarTitleColor" Value="White" />
            </Style>

XAML 页面是

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
    x:Class="Toretto.MobileApp.Views.ForgetPasswordPage"
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:behaviors1="clr-namespace:Toretto.MobileApp.Behaviors"
    xmlns:controls="clr-namespace:Toretto.MobileApp.Controls"
    xmlns:d="http://xamarin.com/schemas/2014/forms/design"
    xmlns:local="clr-namespace:Toretto.MobileApp;assembly=Toretto.MobileApp"
    xmlns:r="clr-namespace:Toretto.MobileApp.LocalizationResources"
    BackgroundColor="White"
    Shell.BackgroundColor="White"
    Shell.NavBarIsVisible="False">
    <ContentPage.Resources>
        <ResourceDictionary />
    </ContentPage.Resources>
    <ContentPage.Content>
        <StackLayout VerticalOptions="StartAndExpand">
            <StackLayout.Padding>
                <OnPlatform x:TypeArguments="Thickness">
                    <OnPlatform.Platforms>
                        <On Platform="iOS" Value="0, 30, 0, 0" />
                        <On Platform="Android" Value="0, 0, 0, 0" />
                    </OnPlatform.Platforms>
                </OnPlatform>
            </StackLayout.Padding>
            <StackLayout
                BackgroundColor="{StaticResource Primary}"
                HeightRequest="60"
                Orientation="Horizontal">
                <Image
                    x:Name="BackImage"
                    Margin="10,0,0,0"
                    HeightRequest="36"
                    Source="{local:ImageResource Toretto.MobileApp.Resources.Images.back.png}"
                    VerticalOptions="CenterAndExpand"
                    WidthRequest="36">
                    <Image.GestureRecognizers>
                        <TapGestureRecognizer Command="{Binding BackCommand}" />
                    </Image.GestureRecognizers>
                </Image>
                <Label
                    Margin="-40,10,0,0"
                    FontSize="Medium"
                    HorizontalOptions="CenterAndExpand"
                    Text="{x:Static r:Resource.ForgetPasswordTitle}"
                    TextColor="White"
                    VerticalOptions="CenterAndExpand" />
            </StackLayout>

            <Label
                Margin="20,20,20,0"
                FontSize="Medium"
                HorizontalOptions="StartAndExpand"
                Text="{x:Static r:Resource.ForgetPasswordSubtitle}"
                TextColor="{StaticResource TorettoDarkColor}" />

            <Label
                x:Name="EmailErrorLabel"
                FontSize="Small"
                HorizontalOptions="CenterAndExpand"
                IsVisible="True"
                Style="{StaticResource ValidationErrorLabelStyle}"
                Text="{Binding Email.Errors, Converter={StaticResource ValidationErrorConverter}}" />


            <Label
                Margin="20,10,20,0"
                FontFamily="Lobster-Regular"
                FontSize="Medium"
                Text="{x:Static r:Resource.User}"
                TextColor="{StaticResource TorettoDarkColor}" />
            <controls:CustomEntry
                x:Name="customEntryEmail"
                Margin="20,0,20,10"
                IsPassword="False"
                Style="{StaticResource CustomEntryStyle}"
                Text="{Binding Email.Value, Mode=TwoWay}">
                <Entry.Behaviors>
                    <behaviors1:EventToCommandBehavior Command="{Binding ValidateEmailCommand}" EventName="TextChanged" />
                </Entry.Behaviors>

                <!--  Sample  -->
                <Entry.Triggers>
                    <Trigger TargetType="Entry" Property="IsFocused" Value="True">
                        <Setter Property="BackgroundColor" Value="{StaticResource TorettoLightColor}" />
                        <!--  multiple Setters elements are allowed  -->
                    </Trigger>
                </Entry.Triggers>

            </controls:CustomEntry>
            <Button
                x:Name="loginButton"
                Margin="20,20,20,20"
                Command="{Binding SendCommand}"
                HeightRequest="40"
                Text="{x:Static r:Resource.Send}"
                TextColor="White"
                VerticalOptions="Center">
                <Button.Triggers>
                    <DataTrigger
                        Binding="{Binding Source={x:Reference customEntryEmail}, Path=Text.Length}"
                        TargetType="Button"
                        Value="0">
                        <Setter Property="IsEnabled" Value="False" />
                    </DataTrigger>
                </Button.Triggers>
            </Button>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

标签: xamarin.forms

解决方案


转到App.XAML并将键更改为您想要的颜色,或者在BaseStyle中找到Shell.TabBarBackgroundColor标记将此值更改为“白色”


推荐阅读