在我的应用中,我需要更改底部导航栏颜色。我看了许多帖子,但无法找到解决方案。我正在使用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>
答案 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)
<color name="blackColorPrimary">#000001</color> (not #000000)
<item name="android:navigationBarColor" tools:targetApi="lollipop">@color/blackColorPrimary</item>
问题是android更高版本使#000000变得透明