我在一个活动我使用工具栏更改颜色Palette
,但使用5.0的设备ActionBarActivity
的status bar
颜色是我的颜色colorPrimaryDark
在我的活动主题,所以我有2个非常不同的颜色和它看起来并不好。
我意识到,在5.0你可以使用Window.setStatusBarColor()
但ActionBarActivity
不具备这一点。
所以我的问题是在5.0我怎样才能更改状态栏的颜色与ActionBarActivity
?
我在一个活动我使用工具栏更改颜色Palette
,但使用5.0的设备ActionBarActivity
的status bar
颜色是我的颜色colorPrimaryDark
在我的活动主题,所以我有2个非常不同的颜色和它看起来并不好。
我意识到,在5.0你可以使用Window.setStatusBarColor()
但ActionBarActivity
不具备这一点。
所以我的问题是在5.0我怎样才能更改状态栏的颜色与ActionBarActivity
?
我不知道我理解这个问题。
我要以编程方式更改状态栏的颜色(和提供的设备具有的是Android 5.0),那么你可以使用Window.setStatusBarColor()
它不应该有所作为的活动是否源自Activity
或ActionBarActivity
。
刚刚尝试做:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.BLUE);
}
只是测试了这个ActionBarActivity
和它的作品好了。
注意:设置FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
标志编程方式是不是如果必要的values-v21
风格文件有它已经设置,通过:
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
有更改状态栏颜色的不同方式。
1)使用styles.xml。 您可以使用android:statusBarColor属性做到这一点很容易,但静态的方式。
注意:您还可以使用此属性与材料的主题。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="AppTheme.Base">
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
</resources>
2)你可以得到它动态地使用Window类的setStatusBarColor(int)方法来完成。 但请记住,这种方法只适用于API 21或更高。 所以一定要检查,或您的应用程序肯定会崩溃较低的设备。
下面是该方法的工作示例。
if (Build.VERSION.SDK_INT >= 21) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(getResources().getColor(R.color.primaryDark));
}
其中primaryDark是原色,我使用我的应用程序的700色调。 您可以定义这个颜色在colors.xml文件。
不要给它一个尝试,让我知道,如果你有任何问题。 希望能帮助到你。
我不认为在状态栏颜色已经在程序兼容性得到落实呢。 这些都是可用的属性:
<!-- ============= -->
<!-- Color palette -->
<!-- ============= -->
<!-- The primary branding color for the app. By default, this is the color applied to the
action bar background. -->
<attr name="colorPrimary" format="color" />
<!-- Dark variant of the primary branding color. By default, this is the color applied to
the status bar (via statusBarColor) and navigation bar (via navigationBarColor). -->
<attr name="colorPrimaryDark" format="color" />
<!-- Bright complement to the primary branding color. By default, this is the color applied
to framework controls (via colorControlActivated). -->
<attr name="colorAccent" format="color" />
<!-- The color applied to framework controls in their normal state. -->
<attr name="colorControlNormal" format="color" />
<!-- The color applied to framework controls in their activated (ex. checked) state. -->
<attr name="colorControlActivated" format="color" />
<!-- The color applied to framework control highlights (ex. ripples, list selectors). -->
<attr name="colorControlHighlight" format="color" />
<!-- The color applied to framework buttons in their normal state. -->
<attr name="colorButtonNormal" format="color" />
<!-- The color applied to framework switch thumbs in their normal state. -->
<attr name="colorSwitchThumbNormal" format="color" />
(由\ SDK \演员\机器人\ SUPPORT \ V7 \程序兼容性\水库\值\ attrs.xml)
试试这个,我用这个和它的作品非常好,V21。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimaryDark">@color/blue</item>
</style>
谢谢上面的答案,与那些的帮助,xamarin.android MVVMCross应用,下面起了一些R&d后
标志在方法活动指定的OnCreate
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
this.Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
}
对于每个MvxActivity,主题被提及作为下面
[Activity(
LaunchMode = LaunchMode.SingleTop,
ScreenOrientation = ScreenOrientation.Portrait,
Theme = "@style/Theme.Splash",
Name = "MyView"
)]
我SplashStyle.xml看起来像如下
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Splash" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:statusBarColor">@color/app_red</item>
<item name="android:colorPrimaryDark">@color/app_red</item>
</style>
</resources>
我有V7 appcompact简称。
应用
<item name="android:statusBarColor">@color/color_primary_dark</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
在Theme.AppCompat.Light.DarkActionBar
并没有为我工作。 什么做的伎俩是,让colorPrimaryDark
像往常一样随着android:colorPrimary
在styles.xml
<item name="android:colorAccent">@color/color_primary</item>
<item name="android:colorPrimary">@color/color_primary</item>
<item name="android:colorPrimaryDark">@color/color_primary_dark</item>
在设置
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
Window window = this.Window;
Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
}
没有必须设置在状态栏的代码颜色。