Android棒棒糖改变导航栏颜色

问题描述 投票:97回答:7

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

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>
android colors android-5.0-lollipop navigationbar
7个回答
176
投票

它可以在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版本<21。

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


61
投票

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

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>

30
投票

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

通过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)


8
投票

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

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

1
投票

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

工具 - > Android - >主题编辑器

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


0
投票

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

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


0
投票
  1. 创建黑色:<color name="blackColorPrimary">#000001</color> (not #000000)
  2. 写作风格:<item name="android:navigationBarColor" tools:targetApi="lollipop">@color/blackColorPrimary</item>

问题是android更高版本对#000000透明

© www.soinside.com 2019 - 2024. All rights reserved.