J. Joe
J. Joe

Reputation: 381

How to change color icon in TabLayout in Xamarin Android?

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

Answers (1)

xleon
xleon

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):

enter image description here

Upvotes: 3

Related Questions