Reputation: 381
tabLayout.AddTab(tabLayout.NewTab().SetIcon(Resource.Drawable.Home24),true);
I want :
default color of icon is #F3F3F3(unclicked)
default color of icon is #00000(clicked).
Upvotes: 1
Views: 1177
Reputation: 6365
First, create a color selector in Resources/drawable/tab_icon_color.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#000000" android:state_selected="true" />
<item android:color="#F3F3F3" />
</selector>
To get a ColorStateList
from that xml:
var tabIconColors = Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop
? Resources.GetColorStateList(Resource.Drawable.home_tab_icon_color, Activity.Theme)
: Resources.GetColorStateList(Resource.Drawable.home_tab_icon_color);
Then, for each tab:
var tab = tabLayout.NewTab().SetIcon(Resource.Drawable.Whatever);
// we wrap the icon to support API < 21
var iconWrap = DrawableCompat.Wrap(tab.Icon);
DrawableCompat.SetTintList(iconWrap, tabIconColors);
tab.SetIcon(iconWrap);
tabLayout.AddTab(tab);
Results (with different colors though):
Upvotes: 3