Xamarin表单:自定义Android材质样式状态栏颜色

Xamarin表单:自定义Android材质样式状态栏颜色,xamarin,material-design,xamarin.forms,statusbar,android-theme,Xamarin,Material Design,Xamarin.forms,Statusbar,Android Theme,我已经用下面的代码在我的Xamarin.Forms项目中启用了Material主题,但是在Android(棒棒糖和棉花糖)上,顶部状态栏(时钟、信号、电池等的位置)没有改变。它始终保持黑色。 我已经阅读了很多论坛和博客,尝试了很多组合,但我不能得到这个状态栏的颜色,因为我想 MainActivity.cs [活动(主题=“@style/MyTheme”,Label=“MyApp”,Icon=“@drawable/AppIcon”,ScreenOrientation=ScreenOrientati

我已经用下面的代码在我的Xamarin.Forms项目中启用了Material主题,但是在Android(棒棒糖和棉花糖)上,顶部状态栏(时钟、信号、电池等的位置)没有改变。它始终保持黑色。 我已经阅读了很多论坛和博客,尝试了很多组合,但我不能得到这个状态栏的颜色,因为我想

MainActivity.cs

[活动(主题=“@style/MyTheme”,Label=“MyApp”,Icon=“@drawable/AppIcon”,ScreenOrientation=ScreenOrientation.肖像,ConfigurationChanges=ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
values-v21/style.xml


@可抽出式/飞溅式挡风玻璃
真的
假的
@颜色/品牌
@颜色/白色
@颜色/品牌深
@颜色/品牌深
@颜色/品牌
@颜色/品牌
values/colors.xml


#f78b2b
#f78b2b
#e47108
#ffffff
谢谢你的帮助

你应该跟随才能成功


基本上,您必须使用
FormsAppCompativeActivity
而不是
FormsApplicationActivity
Theme.AppCompat.Light.NoActionBar
而不是
Theme.Material.Light
其他解决方案,最简单的是,在创建MainActivity.cs的方法中添加:

Window Window=this.Window;
ClearFlags(WindowManagerFlags.TranslucentStatus);
添加标志(WindowManagerFlags.DrawsSystemBarBackgrounds);

SetStatusBarColor(Android.Graphics.Color.Rgb(116181,13))

等效Java版本的翻译:

if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
    // clear FLAG_TRANSLUCENT_STATUS flag:
    Window.ClearFlags(Android.Views.WindowManagerFlags.TranslucentStatus);

    //Window.ClearFlags(WindowManager.Pa WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    Window.AddFlags(Android.Views.WindowManagerFlags.DrawsSystemBarBackgrounds);

    // finally change the color
    Window.SetStatusBarColor(new Color(ContextCompat.GetColor(this, Resource.Color.colorPrimaryDark)));
}

我得到了与公认答案相同的答案。它在做我们的一个项目,而不是另一个

我还没有看到解决这个问题的方法,所以我是第一个来到这里的人

如果您在assemblyInfo.cs而不是清单中声明了使用权限,将导致状态栏无法按预期工作

即使您通过为每个活动单独设置它来让它工作,但当您过渡到活动时,它仍然不工作。因此,唯一的方法是将uses权限语句移动到清单中


希望我能帮助别人

谢谢大家!!是否有任何地方或用户指南,我可以看到所有可能的设置?例如,更改文本条目的颜色,或删除按钮的阴影等。这通常在Android开发指南中定义。这是一个很好的起点。但与AppCompat结合使用时,它总是有点烦躁。xamarin说:“Java.Lang.NoSuchMethodError:在类Landroid/view/Window中没有名为class='setStatusBarColor'signature='(I)V'的方法;”天哪,我讨厌xamarin,没有任何东西能保证工作。他们为什么一开始就发布它?效果很好。谢谢。Maxime Claude SetStatusBarColor在Android棒棒糖下不可用,如有必要,请添加验证