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

时间:2017-09-19 16:23:34

标签: android android-layout android-resources bottomnavigationview

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

是否有某种方法可以从GradientDrawable或类似的东西创建资源,然后传递新的资源ID?

或者是否有其他方法可以在不使用我错过的XML的情况下执行此操作,并允许我传递颜色或Drawable

看起来很奇怪,这太难了......

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

3 个答案:

答案 0 :(得分:2)

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

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

链接到git项目:HERE

答案 1 :(得分:1)

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

答案 2 :(得分:0)

在您的活动中,您可以直接使用诸如:

  

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

希望这对您有用。