Android Lollipop 改变导航条颜色

在我的应用程序中,我需要改变底部导航栏的颜色。我看了很多帖子,但找不到解决办法。我正在使用 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>
193400 次浏览

它可以在 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 上使用)是在清单中将 windowTranslucentNavigingtrue 设置为 true,并在导航栏下方放置一个彩色视图。

以下是如何通过编程方式实现的:

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

下面是如何在 value-v21/style.xml 文件夹中使用 xml 进行操作:

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

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

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

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

通过 XML

1-value-v21/style.xml

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

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

2-value/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 Library-

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)

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

这个老版本的作品,我在 KitKat 中改动了一下,然后来到这里。

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

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

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

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

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

对于使用 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>

把这些放在你的主题上

Xml: < item name = “ android: NavigationBarColor” 工具: targetApi = “21”> yourcolor

@ Zielony 上面的回答可行,

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

还根据@Alexey Ozerov 的评论添加了以下内容

没错

但添加这个屏幕截图的情况下,任何人的新的和有麻烦找到 styles.xmlcolors.xmlenter image description here

如果您想设置 navigationBar的默认颜色,这取决于白天或夜晚的主题,例如,在设置自定义颜色的片段之一,您需要使用这个:

requireActivity().window.navigationBarColor = requireContext().getColorFromAttr(android.R.attr.navigationBarColor)