BarBackgroundColor仅更改导航栏,而不更改标题栏

时间:2019-11-12 15:34:09

标签: c# xamarin.forms

我只是以xamarin形式开始,现在我正在尝试制作它,以便页面的标题栏和导航栏都根据您所在的页面而改变颜色。我也将工具栏位置设置为底部。

问题在于更改颜色只会更改底部的导航栏,而不会更改顶部的标题栏。

我的主页(选项卡式页面)后面的代码

public partial class MainPage : TabbedPage
{
    public MainPage()
    {
        On<Android>().SetToolbarPlacement(ToolbarPlacement.Bottom);
        InitializeComponent();

        this.BarBackgroundColor = Color.FromHex("#008B8B");
        this.BarTextColor = Color.White;
    }
}

这会将我的导航栏底部的颜色更改为所需的颜色,但将顶部标题栏保留为默认的蓝色。

Different colour bars

预算和费用是两个通用的内容页面(如您所见)

2 个答案:

答案 0 :(得分:0)

如果尚未设置页面标题,请更正为空白。为了在每个页面的顶部设置标题栏的颜色,我为每个选项卡式页面子页面使用了导航页面,然后设置了这些导航页面的背景颜色

示例:应用首页的xaml

 <controls:TabbedPage
xmlns:controls="clr-namespace:bla.Controls" xmlns="http://xamarin.com/schemas/2014/forms"
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
        x:Class="bla.Views.HomePage"
        >
<controls:TabbedPage.Children>
    <NavigationPage BarTextColor="White" Title="Home" Icon="home.png"  Padding="0,-12,0,0">

        <x:Arguments>
            <HomePage/>
        </x:Arguments>
    </NavigationPage>

    <NavigationPage Title="Communities" BarTextColor="White" Icon="people_outline.png">
        <x:Arguments>
            <OtherPage />
        </x:Arguments>
    </NavigationPage>
</controls:TabbedPage.Children>

您的app.xaml:

  MainPage = GetMainPage();

  MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Green);

  public static Page GetMainPage()
    {
        return new HomePage();  //home page is a tabbed page

     }

答案 1 :(得分:0)

您可以将App.xaml中的静态资源用于所有项目解决方案的NavigationPage样式。

将此代码粘贴到您的App.xaml中

<Application.Resources>
    <Style TargetType="NavigationPage">
        <Setter Property="BarBackgroundColor" Value="Color of Bar Background" />
        <Setter Property="BarTextColor" Value="Color of your text on you Bar" />
    </Style>
<Application.Resources>

此行可以回答您的问题。

    <Setter Property="BarTextColor" Value="Color of your text on you Bar" />

我希望它能帮助您...