Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android上更改导航栏图标颜色_Android_Material Design - Fatal编程技术网

在Android上更改导航栏图标颜色

在Android上更改导航栏图标颜色,android,material-design,Android,Material Design,我需要更改android上的导航栏。就像下图右侧的“light”变体一样 如中所述。 现在,我可以使用 “android:navigationBarColor” 我明白了 但似乎无法将按钮颜色更改为深色 任何人都知道怎么做 附言: 在AOSP中查找负责导航按钮的类时,我发现 我正在考虑为导航栏按钮(如ic\u sysbar\u recent)获取可绘制的参考,并更改其色调。但是这些都是私人的,我无法得到他们的推荐信 另外,我也见过有人使用xposed库来做这件事,但我不想使用任何外部库 从A

我需要更改android上的导航栏。就像下图右侧的“light”变体一样 如中所述。

现在,我可以使用

“android:navigationBarColor”

我明白了

但似乎无法将按钮颜色更改为深色

任何人都知道怎么做

附言:

在AOSP中查找负责导航按钮的类时,我发现

我正在考虑为导航栏按钮(如
ic\u sysbar\u recent
)获取可绘制的参考,并更改其色调。但是这些都是私人的,我无法得到他们的推荐信


另外,我也见过有人使用xposed库来做这件事,但我不想使用任何外部库

从Android O开始,它变得非常简单,因为您可以:

View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
要使其生效,窗口必须请求 FLAG_绘制系统栏背景,但不绘制FLAG_半透明导航

文档:

如果您使用的是API 27(Android 8.1)或更高版本,您可以在主题中实现这一点:

<item name="android:windowLightNavigationBar">true</item>
true
您可以创建一个名为values-v27的文件夹,并将主题的一个版本(在styles.xml中)放置在一个浅色导航栏中,并使用上面的代码获得深色导航栏按钮。

这样,Android 8.0或更低版本的用户将获得标准(黑色)导航栏,而Android 8.1或更高版本的用户将获得带有黑色按钮的白色导航栏。

如果目标用户Api级别为27或更高,请在应用主题中使用此行

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">       
    <item name="android:windowBackground">@color/your_color</item>                
</style>

@颜色/你的颜色
但如果您的目标用户api级别低于27或更高,您可以使用这些行

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">       
    <item name="android:windowBackground">@color/your_color</item>
    <item name="android:windowLightNavigationBar" tools:targetApi="27">true</item>            
</style>

@颜色/你的颜色
真的
这样,API级别为27或更高的用户将更改底部导航图标的颜色,但API级别低于27的用户将无法享受这些功能

您可以调整
windowLightNavigationBar=true/false
navigationBarColor=@color/yourColorId

有4个案例,我做了一个实验:

简言之,你不想
windowLightNavigationBar=false
navigationBarColor=White

windowLightNavigationBar=true
navigationBarColor=Black
(这将连接到某些设备上)


只需添加这一行,应用程序运行时您就可以了

val navView: BottomNavigationView = findViewById(R.id.nav_view)
    navView.itemIconTintList = null

如果我错了,有人会纠正我,但导航栏按钮是图标,这就是为什么它们不会自动改变颜色。或者用黑色的图标替换掉它们(如果可能的话),或者尝试反转它们。@showp1984是的,我想知道更改这些图标的方法。(按键按查看)根据-->“当您自定义导航栏和状态栏时,要么使其透明,要么仅修改状态栏。在所有其他情况下,导航栏应保持黑色。”-这是不可能的。@DanielOcampo检查问题,已将导航栏设置为所需的颜色(白色),问题是如何更改导航栏上按钮图标的颜色。@DeniErdyneev是的,刚刚要求设计师更改设计:)。需要注意的是,您还需要设置
@color/background\u material\u light
@SUPERCILEX您可以使用任何喜欢的颜色,而不仅仅是background\u material\u light。只需确保使用浅色,因为按钮将是深色的。是的,我的意思是,应该更清楚,您需要使用某种颜色指定该属性,因为我花了几分钟时间弄不清楚导航栏为什么是完全黑色的。(我想
windowLightNavigationBar
会为您更改按钮颜色。)27岁以下怎么样?@MJStudio不可能。值得注意的是,这是(至少对我而言)使导航栏按钮变暗的唯一方法(在Pie上测试,API 28(像素2 XL))。尽管文档()指出
windowLightNavigationBar
XML属性对应于
View.SYSTEM\u UI\u FLAG\u LIGHT\u NAVIGATION\u BAR
,但它们肯定不对应。我不能用上面提到的XML属性使导航栏按钮变暗,但我可以用这段代码。从代码中执行此操作在所有情况下都有效。XML属性似乎只有在您没有使用系统UI标志时才有效,例如
system\u UI\u FLAG\u LAYOUT\u HIDE\u NAVIGATION
system\u UI\u FLAG\u LAYOUT\u FULLSCREEN
。这应该是可以接受的方法。。正如其他人提到的,xml属性在某些情况下似乎很挑剔。。并且仅在27+上可用,而标志在26+上可用+