Android棒棒糖改变导航栏颜色

时间:2015-01-08 11:30:51

标签: android colors android-5.0-lollipop navigationbar

在我的应用中,我需要更改底部导航栏颜色。我看了许多帖子,但无法找到解决方案。我正在使用appCompat库。

enter image description here

V21 / styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light">
       <item name="android:windowBackground">@drawable/bgpreview</item>
       <item name="android:colorPrimary">@color/MyColor</item>
       <item name="android:colorPrimaryDark">@color/MyColor</item>
       <item name="android:windowContentOverlay">@null</item>
       <item name="android:textColorPrimary">@color/MyColor</item>
       <item name="colorAccent">@color/MyColor</item>
       <!-- darker variant for the status bar and contextual app bars -->
       <item name="android:windowContentTransitions">true</item>
       <item name="android:windowAllowEnterTransitionOverlap">true</item>
       <item name="android:windowAllowReturnTransitionOverlap">true</item>
       <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
       <item name="android:windowSharedElementExitTransition">@android:transition/move</item>

       <item name="windowActionBar">false</item>
       <item name="android:textAllCaps">false</item>

</style>

8 个答案:

答案 0 :(得分:170)

可以使用

styles.xml 内完成
<item name="android:navigationBarColor">@color/theme_color</item>

window.setNavigationBarColor(@ColorInt int color)

http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)

请注意,该方法是在Android Lollipop中引入的,并且不再适用于API版本&lt; 21。

第二种方法(适用于KitKat)是在清单中将windowTranslucentNavigation设置为true,并在导航栏下方放置一个彩色视图。

答案 1 :(得分:59)

以下是以编程方式执行此操作的方法:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {                
   getWindow().setNavigationBarColor(getResources().getColor(R.color.your_awesome_color));
}

使用Compat库:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

以下是如何在values-v21 / style.xml文件夹中使用xml:

<item name="android:navigationBarColor">@color/your_color</item>

答案 2 :(得分:29)

以下是一些更改导航栏颜色的方法。

通过XML

1- values-v21 / style.xml

<item name="android:navigationBarColor">@color/navigationbar_color</item>

或者,如果您只想使用值/文件夹,那么 -

2- values / style.xml

<resources xmlns:tools="http://schemas.android.com/tools">

<item name="android:navigationBarColor" tools:targetApi="21">@color/navigationbar_color</item>

您还可以更改导航栏颜色通过编程

 if (Build.VERSION.SDK_INT >= 21)
    getWindow().setNavigationBarColor(getResources().getColor(R.color.navigationbar_color));

使用Compat库 -

if (Build.VERSION.SDK_INT >= 21) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

请查看相关详情的链接 - http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)

答案 3 :(得分:8)

您可以在 values-v21 / style.xml 文件夹中添加以下行:

<item name="android:navigationBarColor">@color/theme_color</item>

答案 4 :(得分:1)

您还可以使用主题编辑器修改主题,方法是单击:

工具 - &gt; Android - &gt;主题编辑

然后,您甚至不需要在.xml或.class文件中添加一些额外的内容。

答案 5 :(得分:1)

对于使用Kotlin的人,您可以将其放入MainActivity.kt:

window.navigationBarColor = ContextCompat.getColor(this@MainActivity, R.color.yourColor)

window为:

val window: Window = this@MainActivity.window

或者您可以将其放在themes.xml或styles.xml中(需要API级别21):

<item name='android:navigationBarColor'>@color/yourColor</item>

答案 6 :(得分:0)

您可以直接在 styles.xml 文件\ app \ src \ main \ res \ values \ styles.xml

中进行更改

这是旧版本的工作,我在KitKat中更改它并来到这里。

答案 7 :(得分:0)

  1. 创建黑色:<color name="blackColorPrimary">#000001</color> (not #000000)
  2. 写样式:<item name="android:navigationBarColor" tools:targetApi="lollipop">@color/blackColorPrimary</item>

问题是android更高版本使#000000变得透明