views:

71

answers:

2

Hey,

I created a small Tab-Layout.

Now how can i specify the color of the TabWidget depending on its state (focused,pressed..)

I built a new .xml, but i dont know how to set it to my Tabs:

<?xml version="1.0" encoding="UTF-8"?> <selector
    android:id="@+id/tabSelector"
    xmlns:android="http://schemas.android.com/apk/res/android"&gt;
    <item
        android:state_focused="false"
        android:state_selected="false"
        android:state_pressed="true"
        android:background="#32CD32"/>  <br />
    <item
        android:state_focused="false"
        android:state_selected="true"
        android:state_pressed="false"/>
    <item
        android:state_focused="true"
        android:state_selected="false"
        android:state_pressed="false"/>
    <item
        android:state_focused="true"
        android:state_selected="true"
        android:state_pressed="false"/>

A: 

ok your selector must be into your res/drawable folder

this is the way to set your selector to the first tab ( getChildAt(0) )

tabs = getTabHost();
...
...
...
tabs.getTabWidget().getChildAt(0).setBackgroundColor(R.drawable.my_selector);
Jorgesys
changed to setBackgroundColor =)
Jorgesys
A: 

Doesnt work with my Code, here it is, guess there is something wrong..:

        TabHost tabHost = getTabHost();
    TabHost.TabSpec spec;
    Intent intent;


    tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.tabselector);

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, Tempo.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("Tab1").setIndicator("Tab1").setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, Abstand.class);
    spec = tabHost.newTabSpec("Tab2").setIndicator("Tab2").setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, Katalog.class);
    spec = tabHost.newTabSpec("Tab3").setIndicator("Tab3").setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, Misc.class);
    spec = tabHost.newTabSpec("Tab4").setIndicator("Tab4").setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);
Christoph
hehe put this line at the end, i mean after tabHost.setCurrentTab(0);tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.tabselector);
Jorgesys
:( it still says "hast stopped unexpectedly" :(
Christoph
Im sorry chris i didn't realize that you defined background colors in your selector, so change the last line for this tabs.getTabWidget().getChildAt(0).setBackgroundColor(R.drawable.my_selector);
Jorgesys
Great, thanks a lot!! It works :)
Christoph
Got another Question, is it possible to add a state_pressed to a tab? When I try to change the color in this state, nothing happens..
Christoph
yes, in your selector add the colour corresponding to state pressed <item android:state_pressed="true" android:background="#FF0000"/>
Jorgesys