Xamarin Shell.BackgroundColor错误
在我的AppShell中,我正在设置外壳的背景色,如下所示: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
<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文件名。当我问这个问题时,我实际上不再从事我正在从事的项目,但如果内存可用,这就是解决方案