【发布时间】:2020-04-26 15:53:42
【问题描述】:
我正在努力让 Android 更新我的状态栏颜色。我在 Xamarin.Android 中使用 AppCompatActivity。
我的values/styles.xml 文件是这样的:
<!-- Main theme -->
<style name="MainTheme" parent="MainTheme.Base">
</style>
<style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowBackground">@color/WindowBackground</item>
<item name="colorPrimary">@color/Primary</item>
<item name="colorPrimaryDark">@color/PrimaryDark</item>
<item name="colorAccent">@color/Accent</item>
<item name="android:textColorPrimary">@color/PrimaryText</item>
<item name="android:textColorSecondary">@color/SecondaryText</item>
</style>
在values-v21/styles.xml 内部,我有以下内容:
<!-- Main theme -->
<style name="MainTheme" parent="MainTheme.Base">
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/PrimaryDark</item>
</style>
但是,状态栏不会更新。但是,如果我从OnCreate() 使用它,颜色会更新得很好:
protected virtual void SetupStatusBar()
{
if (Build.VERSION.SdkInt < BuildVersionCodes.Lollipop)
return;
Window.ClearFlags(WindowManagerFlags.TranslucentStatus);
Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
#pragma warning disable 618
Window.SetStatusBarColor(Resources.GetColor(Resource.Color.PrimaryDark));
#pragma warning restore 618
}
我有点困惑,因为我所做的只是复制 XML 指令。
我使用的是运行 Android 5.1.1(API 22)的 Galaxy Tab S2,我认为应该触发 v21 样式覆盖。
【问题讨论】:
标签: android xamarin android-appcompat