In My Bottom navigation bar, I am using an icon in the menu XML, the icon color changed with the theme color when selected.
after the tab click the icon totally change I am totally stuck why this happens with the png image.
Bottom navigation
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/white"
app:labelVisibilityMode="labeled"
app:itemBackground="@color/transparent"
app:itemTextColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:menu="@menu/bottom_navigation_main" />
Selector
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_compas"
android:state_checked="false"/>
<item android:drawable="@drawable/discover_green"
android:state_enabled="true"/>
</selector>
Bottom_nav_menu
<?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/chatMenuFragment"
android:enabled="true"enter code here
android:icon="@drawable/chat_selector"
android:title="Chat"
app:showAsAction="always" />
<item
android:id="@+id/contactsFragment"
android:enabled="true"
android:icon="@drawable/people_selector"
android:title="People"
app:showAsAction="always" />
<item
android:id="@+id/discoverFragment"
android:enabled="true"
android:icon="@drawable/discover_selector"
android:title="Discovery"
android:backgroundTint="@color/white"
app:showAsAction="always|withText" />
<item
android:id="@+id/myProfileFragment"
android:enabled="true"
android:icon="@drawable/user_selector"
android:title="My"
app:showAsAction="always|withText" />
</menu>
screenshots
Before selection:
After selection:
"@drawable/discover_green" check this drawble , is it what you you're getting after pressing the compass ?
you're using a state list drawable so when you press compass the icon changes to discover_green, it is same as you defined. The solution is the completely delete the state list drawble and use just the icon or changed the green dot icon to something you want to use.
The problem is that selected state apply color filter for whole not transparent part of icon. To fix your selected icon you have to make arrows on green circle transparent not white. Ask designer for change it or do it in some editor by your own.
Your problem arises from the fact that discover_green.png
file has no transparent area. So when the menu item is selected the green tint is applied to the whole image hence you see a green circle.
However in ic_compas.png
everything except the compas is transparent, Meaning if you use it as icon
the compas in image will turn green when selected. For this you will have to modify the Discovery menu item
as
<item
android:id="@+id/discoverFragment"
android:enabled="true"
android:icon="@drawable/ic_compas"
android:title="Discovery"
app:showAsAction="always|withText" />
This will give you a grey compas if item is not selected and a green compas when selected.
您必须同时创建彩色图标和简单图标,并且在选择时您必须将图标形式更改为纯色,而在未选择时您必须将颜色图标更改为纯色图标,这是最简单的方法。
I ran into a similar issue, the problem is that by default the bottom navigation view adds a tint to the drawables and fills everything that is not transparent (like the case of your assets).
try adding this line bottomNavigationView.itemIconTintList = null
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.