Android棒棒糖改变导航栏颜色

use*_*901 112 android colors navigationbar android-5.0-lollipop

在我的应用程序中,我需要更改底部导航栏颜色.我看了许多帖子,但无法找到解决方案.我正在使用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>
Run Code Online (Sandbox Code Playgroud)

Zie*_*ony 200

它可以在styles.xml中使用

<item name="android:navigationBarColor">@color/theme_color</item>
Run Code Online (Sandbox Code Playgroud)

要么

window.setNavigationBarColor(@ColorInt int color)
Run Code Online (Sandbox Code Playgroud)

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

请注意,该方法是在Android Lollipop中引入的,不适用于API版本<21.

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

  • 有没有办法改变图标的​​颜色? (21认同)
  • `<item name ="android:navigationBarColor"> @ color/theme_color </ item>`添加`values-21`文件夹 (10认同)
  • @JamsheedKamarudeen 使用 `&lt;item name="android:windowLightNavigationBar"&gt;true&lt;/item&gt;` (6认同)
  • 不要把它放在你的样式文件中`&lt;item name="android:windowDrawsSystemBarBackgrounds"&gt;false&lt;/item&gt;` 否则系统栏着色将不起作用。 (2认同)

Bol*_*ing 65

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

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

使用Compat库:

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

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

<item name="android:navigationBarColor">@color/your_color</item>
Run Code Online (Sandbox Code Playgroud)

  • 这是一个奇怪的选择!我有一个应用程序,它使导航栏变成黑色,带有黑色按钮,从而无法看到主页/返回/最近的软按钮... (2认同)

D_A*_*pha 34

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

通过XML

1- values-v21/style.xml

<item name="android:navigationBarColor">@color/navigationbar_color</item>
Run Code Online (Sandbox Code Playgroud)

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

2- values/style.xml

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

<item name="android:navigationBarColor" tools:targetApi="21">@color/navigationbar_color</item>
Run Code Online (Sandbox Code Playgroud)

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

 if (Build.VERSION.SDK_INT >= 21)
    getWindow().setNavigationBarColor(getResources().getColor(R.color.navigationbar_color));
Run Code Online (Sandbox Code Playgroud)

通过使用Compat库 -

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

请找到更多详细信息的链接 - http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)


Amy*_*Amy 10

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

window.navigationBarColor = ContextCompat.getColor(this@MainActivity, R.color.yourColor)
Run Code Online (Sandbox Code Playgroud)

window是:

val window: Window = this@MainActivity.window
Run Code Online (Sandbox Code Playgroud)

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

<item name='android:navigationBarColor'>@color/yourColor</item>
Run Code Online (Sandbox Code Playgroud)


Pra*_*ani 8

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

<item name="android:navigationBarColor">@color/theme_color</item>
Run Code Online (Sandbox Code Playgroud)


Far*_*yev 5

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

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