I'm using activity instead of fragment in BottomNavigationView
. I want to change the color of the active activity icon when switching from one activity to another. But somehow I could not. How do I change the color of the selected icon?
Menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/navigation_home"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/title_home"
app:showAsAction="ifRoom"
android:enabled="true"/>
<item
android:id="@+id/navigation_playlist"
android:icon="@drawable/ic_playlist_play_black_24dp"
android:title="@string/title_playlist"
app:showAsAction="ifRoom"
android:enabled="true"/>
<item
android:id="@+id/navigation_profile"
android:icon="@drawable/ic_account_circle_black_24dp"
android:title="@string/title_profile"
app:showAsAction="ifRoom"
android:enabled="true"/>
</menu>
selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/colorPrimary" />
<item android:color="@color/colorAccent" />
</selector>
Layout BottomNavigationView XML:
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
app:itemIconTint="@drawable/selector_bottombar"
app:itemTextColor="@drawable/selector_bottombar"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/bottom_nav_menu" >
</com.google.android.material.bottomnavigation.BottomNavigationView>
MainActivity:
BottomNavigationView navView = findViewById(R.id.nav_view);
navView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
break;
case R.id.navigation_playlist:
Intent a = new Intent(MainActivity.this,Playlist.class);
startActivity(a);
onStop();
break;
case R.id.navigation_profile:
Intent b = new Intent(MainActivity.this,Profile.class);
startActivity(b);
onStop();
break;
}
return false;
}
});
Playlist:
BottomNavigationView navView = findViewById(R.id.nav_view);
navView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_playlist:
break;
case R.id.navigation_profile:
Intent a = new Intent(Playlist.this,Profile.class);
startActivity(a);
onStop();
break;
case R.id.navigation_home:
Intent b = new Intent(Playlist.this,MainActivity.class);
startActivity(b);
onStop();
break;
}
return false;
}
});
Profile:
BottomNavigationView navView = findViewById(R.id.nav_view);
navView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_profile:
break;
case R.id.navigation_home:
Intent a = new Intent(Profile.this,MainActivity.class);
startActivity(a);
onStop();
break;
case R.id.navigation_playlist:
Intent b = new Intent(Profile.this,Playlist.class);
startActivity(b);
onStop();
break;
}
return false;
}
});
Navigation Item (including text and icon) is specified in a menu file.
<com.google.android.material.bottomnavigation.BottomNavigationView
...
app:menu="@menu/navigation"
/>
Create Menu file
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_dailyquote"
android:icon="@drawable/yy_dailyquote"
android:title="@string/navigation_dailyquote"/>
...
</menu>
To support both icon and selected icon, create res/drawable/yy_dailyquote.xml.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/yy_dailyquote_sun" android:state_checked="false"/>
<item android:drawable="@drawable/yy_dailyquote_sun_active" android:state_checked="true"/>
</selector>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.