如何在 运行 时间以编程方式设置 BottomNavigationView 背景颜色

How to programatically set BottomNavigationView background colour at run time

我有一个 BottomNavigationView* 标签栏,我想设置背景颜色,但是直到运行时我才知道颜色。似乎 setItemBackground 需要资源 ID。

有没有什么方法可以用 GradientDrawable 或类似的东西创建资源,然后传递新的资源 ID?

或者有没有其他方法可以不使用我错过的 XML 并允许我只传递颜色或 Drawable?

这么难好像很奇怪...

*实际上使用 BottomNavigationViewEx 这是它从这里的扩展,但它对我的问题没有太大影响:https://github.com/ittianyu/BottomNavigationViewEx

我不知道在 BottomNavigationView 中是如何完成的,即使它是可能的(至少我没有在文档中找到任何指出简单解决方案的内容)但就我个人而言,我也试过 AHBottomNavigation 似乎更完整。它还使您有可能通过以下方式实现您想要的目标:

bottomNavigation.setDefaultBackgroundColor(Color.parseColor("#FEFEFE"));

Link 到 git 项目:HERE

BottomNavigationViewEx 继承自 View,它有一个 setBackground(Drawable drawable) 方法。如果您尝试设置背景,请使用它。如果您想更改项目的背景,您将不得不子类化或创建 BottomNavigationViewEx 的自定义实现,因为它看起来不支持动态生成的资源。但是我没有看到任何禁止这样的事情。

在你的activity中你可以直接使用如:

bottomNavigationView.setItemBackgroundResource((R.color.colorxyz));

希望这对你有用。