这是styles.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
<item name="colorAccent">@color/accent</item>
<!-- Other attributes -->
</style>
虽然这是v21 styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primaryDark</item>
<item name="android:colorAccent">@color/accent</item>
</style>
</resources>
我正在使用那个父主题,因为在activity.java中我正在创建工具栏并将其设置为活动的工具栏
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
}
在Lollipop版本上它很好但是当我在API低于v21的设备上部署时它根本不工作,我仍然看到黑色状态栏和primaryDark完全被忽略。这是正确的方式吗?
答案 0 :(得分:1)
在Lollipop版本上它很好但是当我没有时它根本不起作用 部署在API低于v21的设备上,我仍然看到黑色 状态栏和primaryDark完全被忽略。这是对的 方式是什么?
所有pre-lolipop设备都会忽略您的主要黑暗,因为这是Android Lolipop(5.0+)以来的一项功能。状态栏是操作系统拥有的系统窗口。在5.0之前的Android设备上,应用程序无权更改其颜色,这不是AppCompat库可以更改的内容。
KitKat上有一个“hack”,如here
所述您需要使状态栏变得透明
<item name="android:windowTranslucentStatus">true</item>
您需要将其应用于工具栏以使状态栏更暗
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
...
android:fitsSystemWindows="true"/>
您还可以观看this video。
我担心尝试改变预装KitKat设备的颜色是不可能的,我很乐意纠正。