导航页未在XAML中设置BarBackgroundColor

时间:2018-08-10 16:59:42

标签: xaml xamarin xamarin.forms xamarin.android

以下是Xamarin中用于customNavigation的XAML代码。未设置条形颜色,但设置了条形文本颜色。而且这仅发生在Android中,iOS可以正常工作。

<NavigationPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="DSXMobile.Views.CustomNavigationView"
             BarBackgroundColor="Red"
             BarTextColor="Black">
</NavigationPage>

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

这是一个已知问题,

从Xamarin论坛https://forums.xamarin.com/discussion/88569/barbackgroundcolor-refusing-to-get-set-on-android-but-bartextcolor-is-fine

”如果您使用的是FormsAppCompatActivity

如果您使用的是FormsAppCompatActivity,则这是XF中的错误。

解决方法是在用于FormsAppCompatActivity.ToolbarResource的应用程序的布局文件中设置android:background。

将此值设置为任何值,例如:android:background =“#00000000”

然后XF稍后将使用您的XAML样式中的任何颜色对其进行样式设置。

真正愚蠢的错误,希望它能尽快得到解决。”

另一个参考: https://forums.xamarin.com/discussion/37657/how-to-change-the-nav-bar-background-color-on-android

两个烦人的自定义渲染器解决方案: https://forums.xamarin.com/discussion/17811/tabbedpage-tabbar-background-color-tint

https://forums.xamarin.com/discussion/59828/change-barbackgroundcolor-dynamically

答案 1 :(得分:1)

就像其他答案一样,它是一个错误,但是我不知道是否应该将其称为错误,因为android正在做它所做的事情,现在您可以在styles.xml中选择分配给其活动的主题要做的就是在您的styles.xml中进行相同的更改,就像这样:

       <?xml version="1.0" encoding="utf-8" ?>
      <resources>
      <style name="MyTheme" parent="MyTheme.Base">
       </style>

       <style name="DrawerArrowStyle" 

    parent="@style/Widget.AppCompat.DrawerArrowToggle">
        <item name="spinBars">true</item>
       <item name="color">#FFFFFF</item>
       </style>

     <style name="MyTheme.Base" 
 parent="Theme.AppCompat.Light.DarkActionBar">
     <item name="windowNoTitle">true</item>
     <item name="windowActionBar">false</item>
    <item name="colorPrimary">#003399</item>
    <item name="colorPrimaryDark">#003399</item>
    <item name="colorControlHighlight">#003399</item>
    <item name="colorAccent">#012348</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
    </style>

    </resources>

在这里更改颜色也会在那里更改颜色,例如ColorPrimary是您的工具栏颜色