
Adarsh
Ich habe hinzugefügt BottomNavigationView
in meiner Anwendung wie.
main.xml
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@color/white"
app:itemTextColor="@color/white"
app:menu="@menu/bottom_navigation_main" />
bottom_navigation_main.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/action_favorites"
android:enabled="true"
android:icon="@drawable/ic_favorite_white_24dp"
android:title="@string/text_favorites"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_schedules"
android:enabled="true"
android:icon="@drawable/ic_access_time_white_24dp"
android:title="@string/text_schedules"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_music"
android:enabled="true"
android:icon="@drawable/ic_audiotrack_white_24dp"
android:title="@string/text_music"
app:showAsAction="ifRoom" />
</menu>
Hauptaktivität klicken
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_favorites:
//need change icon of favotites here.
case R.id.action_schedules:
case R.id.action_music:
}
return true;
}
});
Ich möchte das Symbol der unteren Navigation der ausgewählten Position ändern. Wie können wir diese Funktion erreichen, wenn der Benutzer auf ein Element klickt?
(Wenn der Benutzer auf ein Element geklickt hat, wechselt das Symbol zu einem anderen)

kuljeet singh
Sie können einfach einen Drawable-Selektor im Drawable-Ordner erstellen und das Bild kann entsprechend dem Status des in der Ansicht verwendeten Widgets geändert werden
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/calender_green" android:state_checked="true"/>
<item android:drawable="@drawable/calender_black" android:state_checked="false"/>
</selector>
Mit dieser Methode können Sie Ihr Symbol dynamisch festlegen.
R.id.navigation_menu
ist Ihre Artikel-ID in Ihrer R.menu.menu_bottom_navigation
.
val menuItem = bottomNavigationView.menu.findItem(R.id.navigation_menu)
menuItem.setIcon(R.drawable.ic_icon)

Henrique Cesar Madeira
Sie müssen das Symbol beim Klicken zurücksetzen, und dann müssen Sie auf dem Schaltergehäuse nur das einstellen, das Sie ändern müssen, sodass sich das Symbol nur ändert, wenn es ausgewählt ist.
Menu menu = bottomNavigationView.getMenu();
menu.findItem(R.id.action_favorites).setIcon(favDrawable);
switch (item.getItemId()) {
case R.id.action_favorites:
item.setIcon(favDrawableSelected);
case R.id.action_schedules:
case R.id.action_music:
}

Subind Suresh
Die obige Antwort von Ajay Singh https://stackoverflow.com/a/57248961/9793057 hat mir geholfen, ebenso wie die Antworten von oben.
Der folgende Code im res->drawable Ordner (selector_stock_bottom_nav_view.xml)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/button_and_tab_color" android:state_checked="true" />
<item android:color="@android:color/darker_gray" android:state_checked="false" />
</selector>
Dies sind die Attribute in meiner unteren Navigationsansicht
<com.google.android.material.bottomnavigation.BottomNavigationView
app:itemIconTint="@drawable/selector_stock_bottom_nav_view" //To change icon color
app:itemTextColor="@drawable/selector_stock_bottom_nav_view" //To change text color
app:itemTextAppearanceActive="@style/stockBottomNavigationView.Active" //To change size of text during active state
app:itemTextAppearanceInactive="@style/stockBottomNavigationView.InActive"
app:menu="@menu/bottom_navigation_menu"
app:labelVisibilityMode="labeled"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom"
app:selectedBackgroundVisible="false"
android:id="@+id/stock_bottom_navigation"/>
Ich habe “BottomNavigationView.setItemIconTintList(null)” NICHT irgendwo in meinem Code verwendet.
Jetzt Hier kommt das wichtigste Stück Codestellen Sie sicher, dass im Listener der unteren Navigationsansicht “TRUE” zurückgegeben wird, d. h.
private BottomNavigationView.OnNavigationItemSelectedListener stockBottomNavListener = new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
return true;
}
};
Bonus: Um die Größe des aktiven/inaktiven Textstatus zu ändern, fügen Sie den folgenden Code in die Datei styles.xml ein
<style name="stockBottomNavigationView.InActive" parent="@style/TextAppearance.AppCompat.Caption">
<item name="android:textSize">7sp</item>
</style>
<style name="stockBottomNavigationView.Active" parent="@style/TextAppearance.AppCompat.Caption">
<item name="android:textSize">8sp</item>
</style>
Die obige Antwort ist eine Zusammenstellung von Antworten aus verschiedenen Antworten in Stackoverflow in Bezug auf untere Navigationsansichten, Änderung der Symbol- und Textfarbe/-größe.
10105900cookie-checkAndroid: Untere Navigationsansicht – Ändern Sie das Symbol des ausgewählten Elementsyes
Jeder, der Selektoren in seinem Menü hat und die Farben der Selektoren anstelle der Standardfarben der unteren Navigationsleiste anzeigen möchte, überprüft diese Antwort stackoverflow.com/a/44516194/6039240
– Amr
13. Januar um 7:03 Uhr