Search code examples
androidandroid-tabhost

Set color tab host indicator


How do you set the color of the tab host indicator color I want to change the light blue default color to lets says RED.

enter image description here

And I need to this programatically as I am making the tabs programatically.

I did some research and looked at this example but it does not work for me. With the progamtic approach.

TabWidget current tab bottom line color

Thanks


Solution

  • You can do this programmatically, even change the color as you want, by following the solution in the linked question you mention, plus adding a ColorFilter to adjust the color.

    So:

    1. Create the appropriate drawable. The easiest way, as mentioned in one of the answers, is using https://jgilfelt.github.io/android-actionbarstylegenerator/
    2. Place into your project the tab_indicator_ab_example.xml (in drawable) plus the 6 associated png files (tab_*.png) for each drawable density.
    3. After creating the tabs, use the code that iterates over the TabWidget child views to set their background, however:
    4. Instead of setting the drawable as-is, use a color filter to change its color to the desired one.

    Instead of this code:

    for(int i = 0; i < widget.getChildCount(); i++) {
        ... /* same as before */
    
        v.setBackgroundResource(R.drawable.your_tab_selector_drawable);
    }
    

    write something like this:

    for(int i = 0; i < widget.getChildCount(); i++) {
        ... /* same as before */
    
        Drawable d = getResources().getDrawable(R.drawable.tab_indicator_ab_example);
        d.setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN);
        v.setBackgroundDrawable(d);
    }