Android 棒棒糖更改导航栏颜色
Android lollipop change navigation bar color
在我的应用程序中,我需要更改底部导航栏的颜色。我看了很多 post 但找不到解决方案。我正在使用 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>
可以使用
在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 并在导航栏下方放置一个彩色视图。
以下是编程方式:
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>
您可以在 values-v21/style.xml 文件夹中添加以下行:
<item name="android:navigationBarColor">@color/theme_color</item>
这里有一些更改导航栏颜色的方法。
由XML
1- values-v21/style.xml
<item name="android:navigationBarColor">@color/navigationbar_color</item>
或者,如果您只想使用 values/ 文件夹,那么-
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));
通过使用兼容库-
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}
请找到 link 了解更多详情- http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)
你可以直接在styles.xml文件中修改\app\src\main\res\values\styles.xml
这适用于旧版本,我正在 KitKat 中更改它并来到这里。
您还可以使用主题编辑器修改您的主题,方法是单击:
工具 -> Android -> 主题编辑器
那么,您甚至不需要在 .xml 或 .class 文件中添加一些额外的内容。
- 创建黑色:
<color name="blackColorPrimary">#000001</color> (not #000000)
- 风格写作:
<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>
将这些放在您的主题中
themes.xml: < item name="android:navigationBarColor"
tools:targetApi="21">你的颜色
在我的应用程序中,我需要更改底部导航栏的颜色。我看了很多 post 但找不到解决方案。我正在使用 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>
可以使用
在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 并在导航栏下方放置一个彩色视图。
以下是编程方式:
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>
您可以在 values-v21/style.xml 文件夹中添加以下行:
<item name="android:navigationBarColor">@color/theme_color</item>
这里有一些更改导航栏颜色的方法。
由XML
1- values-v21/style.xml
<item name="android:navigationBarColor">@color/navigationbar_color</item>
或者,如果您只想使用 values/ 文件夹,那么-
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));
通过使用兼容库-
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}
请找到 link 了解更多详情- http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)
你可以直接在styles.xml文件中修改\app\src\main\res\values\styles.xml
这适用于旧版本,我正在 KitKat 中更改它并来到这里。
您还可以使用主题编辑器修改您的主题,方法是单击:
工具 -> Android -> 主题编辑器
那么,您甚至不需要在 .xml 或 .class 文件中添加一些额外的内容。
- 创建黑色:
<color name="blackColorPrimary">#000001</color> (not #000000)
- 风格写作:
<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>
将这些放在您的主题中
themes.xml: < item name="android:navigationBarColor" tools:targetApi="21">你的颜色