I'm trying to set the tab style to a light theme. Giving me white tabs. I've tried several ways but I can't get the guys to change color! Can I assign the theme in Manifest, TabHost or Tab Widget?
style.xml
<style name="SBstyle" parent="@android:style/Theme.Light">
<item name="android:windowNoTitle">true</item>
<item name="android:tabWidgetStyle">@style/LightTabWidget</item>
</style>
<style name="LightTabWidget" parent="@android:style/Widget.TabWidget">
<item name="android:textColor">#de6001</item>
then I have my Manifest.xml
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/SBstyle">
and finally my tab.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
a开发者_开发问答ndroid:background="#ffffff"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="0dp"
>
<include layout="@layout/nav_bar" android:layout_height="47dp"
android:layout_width="fill_parent" android:layout_alignParentTop="true" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#f8a96e"
android:tabStripEnabled="false"
/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" />
</LinearLayout>
</TabHost>
I appreciate any help on this, thanks!
If you go with a completely custom tab, you can do anything you want to the tab. Here is 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 looks like this:
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);
// only refresh on watchlist
if (text.equals(context.getString(R.string.WatchList)))
refreshTab(context, view);
else {
RelativeLayout countLayout = (RelativeLayout) view.findViewById(R.id.countLayout);
if (countLayout != null)
countLayout.setVisibility(View.GONE);
}
return view;
}
And finally, the 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>
精彩评论