选项菜单:
<item
android:id="@+id/home"
android:icon="@drawable/ic_home"
android:title="Home"/>
<item
android:id="@+id/companies"
android:icon="@drawable/ic_companies"
android:title="Companies"/>
<item
android:id="@+id/contact"
android:icon="@drawable/ic_contacts"
android:title="Contact"/>
我想根据打开的片段以编程方式更改此项目的图标,显然,当用户点击此按钮时会有不同的操作。我尝试了几件事情,但没有任何效果。
我尝试的最后一件事是我的Fragment
onCreateView
方法中的代码:
Menu menu = bottomNavigationView.getMenu();
menu.findItem(R.id.ic_home).setIcon(R.drawable.ic_home_fill);
但它不适合我。
我在selectFragment(MenuItem item)
switch (item.getItemId()) {
case R.id.home:
item.setIcon(R.id.ic_home_fill);
break;
}
我想更改所选位置底部导航的图标。如果用户点击了一个项目,那么图标会变为另一个项目,当我选择另一个项目时,第一个图标可以设置为默认值。
参考此链接:Android: Bottom Navigation View - change icon of selected item 但它对我不起作用
请给我另一个解决方案。
谢谢
答案 0 :(得分:1)
试试这个,它对我有用
BottomNavigationView mBottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_nav);
mBottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
invalidateOptionsMenu();
switch (item.getItemId()) {
case R.id.click_to_use:
addHomeFragment(MainActivity.this);
mTitle.setText("Home");
item.setIcon(R.drawable.device);
break;
case R.id.history:
addNotifyFragment(MainActivity.this);
mTitle.setText("History");
item.setIcon(R.drawable.ios_icon);
break;
case R.id.settings:
addSettingFragment(MainActivity.this);
mTitle.setText("Settings");
break;
}
return true;
}
});
答案 1 :(得分:0)
在菜单中进行任何修改后,您必须制作一个&#34; Invalidateoptionsmenu()&#34;在行动中。我邀请您测试此功能。 see here