在 Android 5.0 指南中,导航栏似乎可自定义: http://www.google.com/design/spec/layout/structure.html#structure-system-bars
如何更改导航栏颜色? 我想用白色风格。
截图:
编辑:在我的资源中,我测试了样式:
<item name="android:navigationBarColor" tools:targetApi="21">@android:color/white</item>
但按钮是白色的。我想要与第二张图像相同的渲染器。
答案 0 :(得分:18)
从API 27开始,现在可以使用导航栏的灯光样式:
<item name="android:navigationBarColor">@android:color/white</item>
<item name="android:windowLightNavigationBar">true</item>
windowLightNavigationBar
如果设置,将绘制导航栏,使其与灯光导航栏背景兼容。
要使此操作生效,窗口必须绘制系统栏 windowDrawsSystemBarBackgrounds和导航的背景 酒吧一定不能要求半透明 windowTranslucentNavigation。对应设定 装饰视图上的SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR。
答案 1 :(得分:17)
在活动中使用此功能。
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.green));
}
答案 2 :(得分:7)
导航栏不应该是彩色的
自定义导航和状态栏时,要么使它们都透明,要么只修改状态栏。在所有其他情况下,导航栏应保持黑色。
(来源https://developer.android.com/training/material/theme.html)
但是,您可以使用此库来实现您想要的:) https://github.com/jgilfelt/SystemBarTint
答案 3 :(得分:5)
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.colorWhite));
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR); //For setting material color into black of the navigation bar
}
如果您的应用的API级别大于23,请使用此值
getWindow().setNavigationBarColor(ContextCompat.getColor(MainActivity.this, R.color.colorWhite));
getWindow().getDecorView().setSystemUiVisibility(SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
此代码可能不适用于API级别30。因为API级别30不推荐使用“ SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR”。 检查一下: https://developer.android.com/reference/android/view/View#SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
答案 4 :(得分:4)
在你的v21 / style
中添加这个linle
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@color/colorPrimaryDark</item>
</style>
答案 5 :(得分:2)
您还可以通过编程方式在API 26中设置灯光系统导航栏:
View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
其中View
coluld为findViewById(android.R.id.content)
。
但请记住:
要使此操作生效,该窗口必须请求
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
,但不能FLAG_TRANSLUCENT_NAVIGATION
。
请参阅documentation。
答案 6 :(得分:2)
使用此简单行根据您的屏幕背景色更改导航栏颜色
Function
否则,您可以在导航栏中使用灯光样式
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.any_color));
}
答案 7 :(得分:2)
getWindow().setNavigationBarColor(ContextCompat.getColor(MainActivity.this,R.color.colorPrimary)); //setting bar color
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); //additional setting items to be black if using white ui
答案 8 :(得分:1)
老问题。但是这个时候我们有一个直接的解决方案。可能对某人有帮助。
public static void setNavigationBarColor(Activity activity, int color, int divColor) {
Window window= activity.getWindow();
window.setNavigationBarColor(color);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
window.setNavigationBarDividerColor(divColor);
}
}