If you navigate with a fully customizable tab, you can do whatever you want on the tab. Here is the code. Hope it helps:
private void initializeTabs(int curTab) { this.tabHost = getTabHost(); tabHost.clearAllTabs(); TabSpec ts1, ts2, ts3, ts4, ts5; // tab separator tabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider); ts1 = this.setupTab(new TextView(this), tabHost, R.drawable.browse_tab_normal, mResources.getString(R.string.Browse)); ts2 = this.setupTab(new TextView(this), tabHost, R.drawable.search_tab_normal, mResources.getString(R.string.Search)); ts3 = this.setupTab(new TextView(this), tabHost, R.drawable.postad_tab_normal, mResources.getString(R.string.Post)); ts4 = this.setupTab(new TextView(this), tabHost, R.drawable.watchlist_tab_normal, mResources.getString(R.string.WatchList)); ts5 = this.setupTab(new TextView(this), tabHost, R.drawable.managead_tab_normal, mResources.getString(R.string.Login)); // intents ts1.setContent(new Intent().setClass(this, BrowseTabActivity.class)); ts2.setContent(new Intent().setClass(this, SearchTabActivity.class)); ts3.setContent(new Intent().setClass(this, PostAdTabActivity.class)); ts4.setContent(new Intent().setClass(this, WatchlistTabActivity.class)); ts5.setContent(new Intent().setClass(this, LoginTabActivity.class)); tabHost.addTab(ts1); tabHost.addTab(ts2); tabHost.addTab(ts3); tabHost.addTab(ts4); tabHost.addTab(ts5); /** * Reset the tabs by showing the tab home screen everytime the tab * is clicked in any screen other than home screen. */ getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (getTabHost().getCurrentTabTag().equals(mTag1) == false) { getTabHost().setCurrentTab(0); } handleTabClicks(); } }); getTabWidget().getChildAt(2).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (getTabHost().getCurrentTabTag().equals(mTag2) == false) { getTabHost().setCurrentTab(1); } handleTabClicks(); } }); getTabWidget().getChildAt(4).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (getTabHost().getCurrentTabTag().equals(mTag3) == false) { getTabHost().setCurrentTab(2); } handleTabClicks(); } }); getTabWidget().getChildAt(6).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (getTabHost().getCurrentTabTag().equals(mTag4) == false) { getTabHost().setCurrentTab(3); } handleTabClicks(); } }); // Login getTabWidget().getChildAt(8).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (getTabHost().getCurrentTabTag().equals(mTag5) == false) { getTabHost().setCurrentTab(4); } handleTabClicks(); } }); // so that we can programatically switch tabs ((ApplicationHelper) getApplication()).setTabHost(tabHost); fl = (FrameLayout) findViewById(android.R.id.tabcontent); tabHost.setCurrentTab(curTab); }
I call initializeTabs () from onCreate ().
setupTab is as follows:
private TabSpec setupTab(final View view, final TabHost mTabHost, final int imageId, final String tag) { final View tabview = createTabView(mTabHost.getContext(), imageId, tag); TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabContentFactory() { public View createTabContent(String tag) {return view;} }); return setContent; } private static View createTabView(final Context context, final int imageId, final String text) { View view = LayoutInflater.from(context).inflate(R.layout.tab_with_icon, null); TextView tv = (TextView) view.findViewById(R.id.tabTitle); tv.setText(text); ImageView iv = (ImageView) view.findViewById(R.id.iconImage); if (iv != null) iv.setImageResource(imageId); view.setTag(text); view.setBackgroundResource(R.drawable.tab_bg_selector);
And finally, XML for R.layout.tab_with_icon:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tabsLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/tab_bg_selector" android:orientation="vertical"> <RelativeLayout android:layout_width="wrap_content" android:id="@+id/relativeLayout1" android:layout_height="wrap_content" android:gravity="center" android:layout_centerInParent="true" android:background="@drawable/tab_bg_selector"> <ImageView android:layout_width="wrap_content" android:id="@+id/iconImage" android:src="@drawable/watchlist_tab_normal" android:layout_height="wrap_content" android:layout_centerHorizontal="true"></ImageView> <TextView android:text="Title" android:layout_width="wrap_content" android:id="@+id/tabTitle" android:layout_height="wrap_content" android:layout_below="@+id/iconImage" android:layout_centerHorizontal="true" android:ellipsize="marquee" android:lines="1" android:maxLines="1" android:scrollHorizontally="true" android:textSize="@dimen/tabTextSize"></TextView> <RelativeLayout android:layout_width="wrap_content" android:id="@+id/countLayout" android:layout_height="wrap_content" android:layout_alignRight="@+id/iconImage"> <ImageView android:layout_width="wrap_content" android:id="@+id/redImage" android:src="@drawable/watchlist_count" android:layout_height="wrap_content"></ImageView> <TextView android:text="1" android:textColor="@color/white" android:layout_width="wrap_content" android:id="@+id/countText" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textStyle="bold"></TextView> </RelativeLayout> </RelativeLayout> </RelativeLayout>