Как изменить изображение определенного значка из нижнего окна навигации

Мне нужно реализовать нижнее представление навигации в моем приложении для Android. Средний значок должен быть изображением, логотипом компании. Но когда я запускаю приложение, появляется только серый закругленный значок с закругленными краями. На изображениях выше показано, чего я хочу и что получаю.

Что я хочу:  введите описание изображения здесь

Что я получаю:  введите описание изображения здесь

Я уже пробовал другие вопросы на этом веб-сайте, но каждый ответ говорит об изменении iconTintList из XML с возможностью рисования, но центральный значок - это вектор с более чем одним цветом.

Когда я попытался установить значение null для метода setIconTintList, он работает для среднего значка, но другие значки тоже меняют на исходный цвет.

//This doesn't work to other icons, only for the middle one 
mBottomNav.setItemIconTintList(null);

Я также попытался получить меню и установить список оттенков значков только для среднего, как в приведенном выше коде, но тоже не работает.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    mBottomNav.getMenu().findItem(R.id.nav_buy).setIconTintList(null);
}

Это реализация XML:

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottomNavigationView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@color/kmv_background"
        app:itemIconTint="@drawable/bottom_nav_item_color"
        app:itemTextColor="@drawable/bottom_nav_item_color"
        app:labelVisibilityMode="labeled"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/bottom_navigation" />

Это реализация java:

mBottomNav = findViewById(R.id.bottomNavigationView);
mBottomNav.setOnNavigationItemSelectedListener(this);

Спасибо за любую помощь!


person Fernando Barbosa    schedule 09.09.2019    source источник


Ответы (1)


Я не думаю, что есть короткий путь. Используйте это в первую очередь:

   mBottomNav.setItemIconTintList(null);

Затем сделайте дизайн самостоятельно. Не забудьте разделить кнопки по нажатию и не по нажатию.

Пример XML кнопки "Домой"

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--Clicked-->
    <item android:drawable="@drawable/homeclicked" android:state_checked="true" />
    <!--Not Clicked-->
    <item android:drawable="@drawable/homenotclicked" android:state_checked="false" />
</selector>

И добавьте их в представление: Пример bottom_navigation.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/homebuttons"
        android:icon="@drawable/homebuttonxml />

 <!--Other Buttons...-->

</menu>

И, наконец, ссылка на вид снизу.

<com.google.android.material.bottomnavigation.BottomNavigationView    
     android:id="@+id/bottomNavigationView"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     app:labelVisibilityMode="unlabeled"
     app:elevation="0dp"
     app:menu="@menu/bottom_navigation">  
   
</com.google.android.material.bottomnavigation.BottomNavigationView>
person Murat AKSU    schedule 10.09.2019
comment
Прекрасно работает! Большое спасибо! - person Fernando Barbosa; 10.09.2019
comment
Потрясающий. Спасибо, это то, что я ищу. - person Titus Sutio Fanpula; 01.05.2021