我正在开发一些我没有创建的应用程序,我想为API 21及更高版本设置导航栏和通知栏颜色。该应用程序的主题是纯XML,没有新的应用程序主题库。我甚至可以设置这样一个奇怪的主题设置和只使用xml的颜色吗?有人能解释一下在哪里添加什么吗?
我用尝试了各种各样的东西
<item name="android:navigationBarColor">@color/theme_color</item>
但我似乎总是把事情弄糊涂。
我只有主题.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.phttpp.TitleBar" parent="android:Theme">
<item name="android:windowTitleBackgroundStyle">@style/windowTitleBackgroundStyle</item>
<item name="android:windowTitleStyle">@style/windowTitleStyle</item>
<item name="android:windowTitleSize">50dip</item>
</style>
<style name="Theme.dialog.TitleBar" parent="@android:style/Theme.Dialog">
<item name="android:windowTitleStyle">@style/windowTitleStyle</item>
<item name="android:windowTitleSize">50dip</item>
</style>
</resources>
和
值文件夹中的styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="windowTitleBackgroundStyle">
<item name="android:background">#00BCD4</item>
</style>
<style name="windowTitleStyle">
<item name="android:textColor">#FFFFFF</item>
<item name="android:padding">12dip</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">16sp</item>
<item name="android:background">#00BCD4</item>
<item name="android:maxLines">1</item>
</style>
</resources>
我找到了一个适用于API21及以上版本的解决方案。我没有改变任何主题和样式,但我将colors.xml添加到/values-v21
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#00BCD4</color>
<color name="colorPrimaryDark">#008394</color>
<color name="colorAccent">#33c9dc</color>
<color name="colorGray">#e0e0e0</color>
</resources>
并在我的Java代码中将此添加到onCreate的主要活动中
if (Build.VERSION.SDK_INT >= 21) {
Window window = this.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(this.getResources().getColor(R.color.colorPrimaryDark));
getWindow().setNavigationBarColor(getResources().getColor(R.color.colorGray));
}