我想为状态栏上色,以便在Android 5.0中更好看。我想设置三种颜色的primarydark,light和accent。
但我的最低API是15.有没有机会在API lvl 21下使用它?或者我必须用min创建一个单独的应用程序。 sdk 21?
编辑: 现在我得到了我需要的一切,但是statisbar颜色不会改变。
这是我的值-v21 / styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppBaseTheme" parent="android:Theme.Material.Light">
<!-- API 21 theme customizations can go here. -->
<!-- Main theme colors -->
<!-- your app branding color for the app bar -->
<item name="android:colorPrimary">@color/primary</item>
<!-- darker variant for the status bar and contextual app bars -->
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<!-- theme UI controls like checkboxes and text fields -->
<item name="android:colorAccent">@color/accent</item>
</style>
</resources>
这是普通的style.xml
<resources>
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme"
parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/blue</item>
</style>
</resources>
任何想法,为什么这不起作用?
答案 0 :(得分:8)
您可以针对不同的API级别使用不同的样式。
对于API&lt; 21,您将使用普通res/values/styles.xml
,然后对于API 21+,您将拥有res/values-v21/styles.xml
。
如果设备运行的是API 21或更高版本,则它将使用-v21
文件夹中的文件。如果您只想设置<color>
值,则只需将密钥命名为相同,并对colors.xml
执行相同操作。
http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources
示例:
res/values/colors.xml
:
<!-- Colours for API <21 -->
<color name="primaryDark">#800000</color>
<color name="light">#800080</color>
<color name="accent">#FF0000</color>
res/values-v21/colors.xml
:
<!-- Colours for API 21+ -->
<color name="primaryDark">#000008</color>
<color name="light">#080008</color>
<color name="accent">#0000FF</color>
答案 1 :(得分:2)
尝试以编程方式设置背景:
actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_background));
actionbar_background.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#e59300" />
</shape>
</item>
<item android:bottom="3dp">
<shape>
<solid android:color="#fbb903" />
</shape>
</item>
</layer-list>
答案 2 :(得分:2)
colorPrimaryDark
用于为状态栏添加颜色...状态栏主题是在Lollipop中添加到Android的功能。 请注意,旧设备上的状态栏将显示为黑色(无论主题指定的是什么)。
参考“Android编程指南2ed”大书呆子牧场指南P360。 但我在Android开发者指南中找不到它。