Is it possible to change the color of selected Tab in android?
Solution 1
Try this:
...onCreate(){
...
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String arg0) {
setTabColor(tabHost);
}
});
setTabColor(tabHost);
...
}
//Change The Backgournd Color of Tabs
public void setTabColor(TabHost tabhost) {
for(int i=0;i<tabhost.getTabWidget().getChildCount();i++)
tabhost.getTabWidget().getChildAt(i).setBackgroundColor(COLOR_CYAN); //unselected
if(tabhost.getCurrentTab()==0)
tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(COLOR_RED); //1st tab selected
else
tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(COLOR_BLUE); //2nd tab selected
}
Solution 2
You can set Listener
for your TabHost
using setOnTabChangedListener
and change it dynamically,
public void onCreate(Bundle savedInstanceState){
// add your tabs here
// set the First Tab as selected Tab.
setSelectedTabColor();
}
Create a method that will set the Selected
and Unselected
color of Tab
.
private void setSelectedTabColor() {
for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
{
tabHost.getTabWidget().getChildAt(i)
.setBackgroundColor(Color.WHITE);
}
tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab())
.setBackgroundColor(Color.RED);
}
Then inside your onTabChanged()
you can dynamically change the Background.
@Override
public void onTabChanged(String tabId) {
setSelectedTabColor();
}
You can use the same for selected
and unselected
Tab, here
is the Blog for the same.
Solution 3
Use the setIndicator(View view) instead of setIndicator(CharSequence label, Drawable icon). The background setting of the view you'll pass (e.g. if you're inflating an xml the parent layout) should be a ColorStateList to handle the clicks.
Comments
-
Mercy almost 2 years
Hi i have two tabs in my tab widget,i want to apply the two different color for two tabs.am searching everywhere,mostly all colors are same while applying the tab.
update
first tab when selected red color
second tab when selected blue color
Here my code
tabHost = (TabHost)findViewById(android.R.id.tabhost); TabSpec firstTabSpec = tabHost.newTabSpec("tid1");//these are color red TabSpec secondTabSpec = tabHost.newTabSpec("tid1");//these color blue firstTabSpec.setIndicator("Sales Info",getResources().getDrawable(R.drawable.sales)); Intent photosIntent = new Intent(this, a.class); firstTabSpec.setContent(photosIntent); secondTabSpec.setIndicator("Service Info",getResources().getDrawable(R.drawable.services)); Intent photosIntent1 = new Intent(this, b.class); secondTabSpec.setContent(photosIntent1); tabHost.addTab(firstTabSpec); tabHost.addTab(secondTabSpec);
-
Mercy about 12 yearsThank you ,Type mismatch: cannot convert from void to View am getting error View view = myTabHost.getTabWidget().getChildAt(tab) .setBackgroundColor(Color.CYAN); this line
-
Mercy about 12 yearsthe unselected tab also cyan color
-
Lalit Poptani about 12 years@micro I had added the link for the same, how you can manage the unselected tabs also.
-
Mercy about 12 yearsThank you hiral its working but i apply the color code Color.green(0xCFEB5D) instead of (color.GREEN).its not working why?
-
Mercy about 12 years@thank you lalit its working but i apply the color code Color.green(0xCFEB5D) instead of (color.GREEN).its not working why?
-
Mercy about 12 years
-
Hiral Vadodaria about 12 yearsIt should work because Color.GREEN is directly accessible.You can then use Color.parseColor("#color_code_of_green");