Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin Shell.BackgroundColor错误_Xamarin_Xamarin.forms - Fatal编程技术网

Xamarin Shell.BackgroundColor错误

Xamarin Shell.BackgroundColor错误,xamarin,xamarin.forms,Xamarin,Xamarin.forms,在我的AppShell中,我正在设置外壳的背景色,如下所示: <Setter Property="Shell.BackgroundColor" Value="#0075BE" /> 但是,当应用程序在iOS模拟器中运行时,标题栏的背景色实际上是#2588C6(我用颜色选择器检查过)。 在Android仿真器中,颜色更接近#0073C1,但仍然不正确 如何使标题栏成为我指定的实际颜色?您可以尝试使用 IOS: using UIKit; using Xamarin.Forms; u

在我的AppShell中,我正在设置外壳的背景色,如下所示:

<Setter Property="Shell.BackgroundColor" Value="#0075BE" />

但是,当应用程序在iOS模拟器中运行时,标题栏的背景色实际上是
#2588C6
(我用颜色选择器检查过)。 在Android仿真器中,颜色更接近
#0073C1
,但仍然不正确

如何使标题栏成为我指定的实际颜色?

您可以尝试使用

IOS:

using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(Xaminals.AppShell), typeof(Xaminals.iOS.MyShellRenderer))]
namespace Xaminals.iOS
{
    public class MyShellRenderer : ShellRenderer
    {
        protected override IShellSectionRenderer CreateShellSectionRenderer(ShellSection shellSection)
        {
            var renderer = base.CreateShellSectionRenderer(shellSection);
            if (renderer != null)
            {
                (renderer as ShellSectionRenderer).NavigationBar.BackgroundColor = UIColor.Red;
                (renderer as ShellSectionRenderer).NavigationBar.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
            }
            return renderer;
        }
    }
}
using Android.Content;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(Xaminals.AppShell), typeof(Xaminals.Droid.MyShellRenderer))]
namespace Xaminals.Droid
{
    public class MyShellRenderer : ShellRenderer
    {
        public MyShellRenderer(Context context) : base(context)
        {
        }

        protected override IShellToolbarAppearanceTracker CreateToolbarAppearanceTracker()
        {
            return new MyShellToolbarAppearanceTracker(this);
        }
    }

    public class MyShellToolbarAppearanceTracker : ShellToolbarAppearanceTracker
    {
        public MyShellToolbarAppearanceTracker(IShellContext context) : base(context)
        {
        }

        public override void SetAppearance(Toolbar toolbar, IShellToolbarTracker toolbarTracker, ShellAppearance appearance)
        {
            base.SetAppearance(toolbar, toolbarTracker, appearance);
            toolbar.SetBackgroundColor(Android.Graphics.Color.ParseColor("#0075BE"));
        }
    }

}
Android:

using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(Xaminals.AppShell), typeof(Xaminals.iOS.MyShellRenderer))]
namespace Xaminals.iOS
{
    public class MyShellRenderer : ShellRenderer
    {
        protected override IShellSectionRenderer CreateShellSectionRenderer(ShellSection shellSection)
        {
            var renderer = base.CreateShellSectionRenderer(shellSection);
            if (renderer != null)
            {
                (renderer as ShellSectionRenderer).NavigationBar.BackgroundColor = UIColor.Red;
                (renderer as ShellSectionRenderer).NavigationBar.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
            }
            return renderer;
        }
    }
}
using Android.Content;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(Xaminals.AppShell), typeof(Xaminals.Droid.MyShellRenderer))]
namespace Xaminals.Droid
{
    public class MyShellRenderer : ShellRenderer
    {
        public MyShellRenderer(Context context) : base(context)
        {
        }

        protected override IShellToolbarAppearanceTracker CreateToolbarAppearanceTracker()
        {
            return new MyShellToolbarAppearanceTracker(this);
        }
    }

    public class MyShellToolbarAppearanceTracker : ShellToolbarAppearanceTracker
    {
        public MyShellToolbarAppearanceTracker(IShellContext context) : base(context)
        {
        }

        public override void SetAppearance(Toolbar toolbar, IShellToolbarTracker toolbarTracker, ShellAppearance appearance)
        {
            base.SetAppearance(toolbar, toolbarTracker, appearance);
            toolbar.SetBackgroundColor(Android.Graphics.Color.ParseColor("#0075BE"));
        }
    }

}

只需在AppDelegate.cs中添加这一行

UINavigationBar.Appearance.Translucent = false;

请看可能的副本,这就是解决方案,谢谢弗朗西斯。谢谢。iOS版本出现错误:
命名空间“Xaminals”中不存在类型或命名空间名称“AppShell”(是否缺少程序集引用?
。?@danwellman Okey,
AppShell
是从
Xamarin.Forms.Shell
继承的我的project.cs文件,替换为你的.cs文件名。当我问这个问题时,我实际上不再从事我正在从事的项目,但如果内存可用,这就是解决方案