我知道我们可以通过this方式从XML设置底部导航选择颜色
但我想知道如何从我的Activity以编程方式更改它?
这是我在Activity的OnNavigationItemSelectedListener
中尝试的。
item.getIcon().setTint(ContextCompat.getColor(context, R.color.colorBrown));
还尝试更改色调列表,如下所示:
item.setIconTintList(ColorStateList.valueOf(ContextCompat.getColor(context, R.color.colorPrimaryBlue)));
下面是我的代码的完整片段:
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= item -> {
switch (item.getItemId()) {
case R.id.navigationTask:
item.getIcon().setTint(ContextCompat.getColor(context, R.color.colorBrown));
fragment = new MyTaskFragment();
break;
case R.id.navigationProfile:
item.setIconTintList(ColorStateList.valueOf(ContextCompat.getColor(context, R.color.colorPrimaryBlue)));
fragment = new ProfileFragment();
break;
case R.id.navigationRequest:
fragment = new RequestListFragment();
break;
case R.id.navigationMore:
fragment = new MoreFragment();
break;
}
loadFragment(fragment);
return true;
};
但它对我不起作用。任何关于如何以编程方式更改它的想法或参考链接对我都很有帮助。
注意:我只想更改所选项的图标和文本色调,而不是底部导航栏中的所有项目。
先谢了。
2条答案
按热度按时间bttbmeg01#
您可以用途:
并使用选择器(不是单色):
第一节第一节第一节第一节第一次
如果您想以编程方式执行此操作:
gzjq41n42#
以下是@加布里埃尔在Kotlin的回答: