【发布时间】:2014-12-21 13:31:26
【问题描述】:
如何在棒棒糖之前的设备中将导航栏的颜色/透明度从黑色更改为通用颜色(例如状态栏或操作栏的颜色)?
我可以使用 AppCompat 还是只能使用 SDK 21?
【问题讨论】:
-
查看link
-
这个 (developer.xamarin.com/guides/android/user_interface/… ) 是我的意思的导航栏。
如何在棒棒糖之前的设备中将导航栏的颜色/透明度从黑色更改为通用颜色(例如状态栏或操作栏的颜色)?
我可以使用 AppCompat 还是只能使用 SDK 21?
【问题讨论】:
您可以在 AppCompat 主题中设置属性 navigationBarColor,或在原生 v21 主题中设置 android:navigationBarColor。
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
...
<item name="navigationBarColor">#123456</item>
</style>
https://developer.android.com/training/material/theme.html#StatusBar
请注意,这不适用于 Pre-Lollipop 设备,因为此功能需要系统支持,而 Android 4.4 或更早版本则不支持。
【讨论】:
No resource found that matches the given name: attr 'navigationBarColor'.
navigationBarColor 你必须在 values-21 中使用原生 v21 android:navigationBarColor
另一种编程方式:
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(getResources().getColor(R.color.DarkOrange));
window.setNavigationBarColor(getResources().getColor(R.color.red));
此外,要更改状态栏颜色,请添加以下行:
window.setStatusBarColor(getResources().getColor(R.color.green));
【讨论】:
风格-v21
<resources>
<style name="Theme.DesignDemo" parent="Base.Theme.DesignDemo">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentNavigation">true</item>//translucent
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
【讨论】: