【问题标题】:Change navigation bar color, Android更改导航栏颜色,Android
【发布时间】:2014-12-21 13:31:26
【问题描述】:

如何在棒棒糖之前的设备中将导航栏的颜色/透明度从黑色更改为通用颜色(例如状态栏或操作栏的颜色)?

我可以使用 AppCompat 还是只能使用 SDK 21?

【问题讨论】:

标签: java android xml


【解决方案1】:

您可以在 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 或更早版本则不支持。

【讨论】:

  • 谢谢,但我正在寻找适用于棒棒糖前设备的东西(minSDK 11)。
  • 这是不可能的 afaik
  • Lollipop 设备是否至少可以使用 appcompat,这样我就不必将 minSDK 设置为 21?
  • 我收到No resource found that matches the given name: attr 'navigationBarColor'.
  • appCompat 没有navigationBarColor 你必须在 values-21 中使用原生 v21 android:navigationBarColor
【解决方案2】:

另一种编程方式:

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));

【讨论】:

  • 非常感谢,window.addFlags(WindowManager.LayoutParams.FLAG_DAWS_SYSTEM_BAR_BACKGROUNDS);是我错过的东西。
【解决方案3】:

风格-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>

【讨论】:

    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多