MainActivity.java
package com.example.tabhostdemo; import java.util.ArrayList; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTabHost; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TabHost.OnTabChangeListener; import android.widget.TabHost.TabSpec; import android.widget.TabWidget; import android.widget.TextView; public class MainActivity extends FragmentActivity implements OnTabChangeListener{ private FragmentTabHost tabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tabHost=(FragmentTabHost)super.findViewById(android.R.id.tabhost); tabHost.setup(this,super.getSupportFragmentManager() ,R.id.contentLayout); tabHost.getTabWidget().setDividerDrawable(null); tabHost.setOnTabChangedListener(this); initTab(); } private void initTab(){ String tabs[]=TabDb.getTabsTxt(); for(int i=0;i<tabs.length;i++){ TabSpec tabSpec=tabHost.newTabSpec(tabs[i]).setIndicator(getTabView(i)); tabHost.addTab(tabSpec,TabDb.getFragments()[i],null); tabHost.setTag(i); } } private View getTabView(int idx){ View view=LayoutInflater.from(this).inflate(R.layout.footer_tabs,null); ((TextView)view.findViewById(R.id.tvTab)).setText(TabDb.getTabsTxt()[idx]); if(idx==0){ ((TextView)view.findViewById(R.id.tvTab)).setTextColor(Color.RED); ((ImageView)view.findViewById(R.id.ivImg)).setImageResource(TabDb.getTabsImgLight()[idx]); }else{ ((ImageView)view.findViewById(R.id.ivImg)).setImageResource(TabDb.getTabsImg()[idx]); } return view; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onTabChanged(String tabId) { // TODO Auto-generated method stub updateTab(); } private void updateTab(){ TabWidget tabw=tabHost.getTabWidget(); for(int i=0;i<tabw.getChildCount();i++){ View view=tabw.getChildAt(i); ImageView iv=(ImageView)view.findViewById(R.id.ivImg); if(i==tabHost.getCurrentTab()){ ((TextView)view.findViewById(R.id.tvTab)).setTextColor(Color.RED); iv.setImageResource(TabDb.getTabsImgLight()[i]); }else{ ((TextView)view.findViewById(R.id.tvTab)).setTextColor(getResources().getColor(R.color.foot_txt_gray)); iv.setImageResource(TabDb.getTabsImg()[i]); } } } }
main_activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <FrameLayout android:id="@+id/contentLayout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </FrameLayout> <android.support.v4.app.FragmentTabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#F6F6F6" > <FrameLayout android:id="@android:id/tabcontent" android:layout_height="0dp" android:layout_width="0dp" /> </android.support.v4.app.FragmentTabHost> </LinearLayout>
TabDb.java
package com.example.tabhostdemo; import com.example.fragment.FoundFragment; import com.example.fragment.NewsFragment; import com.example.fragment.OwnerFragment; import com.example.fragment.ReadFragment; import com.example.fragment.VideoFragment; public class TabDb { public static String[] getTabsTxt(){ String[] tabs={"新闻","阅读","试听","发现"," 我"}; return tabs; } public static int[] getTabsImg(){ int[] ids={R.drawable.foot_news_normal,R.drawable.foot_read_normal,R.drawable.foot_vdio_normal,R.drawable.foot_fond_normal,R.drawable.foot_out_normal}; return ids; } public static int[] getTabsImgLight(){ int[] ids={R.drawable.foot_news_light,R.drawable.foot_read_light,R.drawable.foot_vdio_light,R.drawable.foot_found_light,R.drawable.foot_out_light}; return ids; } public static Class[] getFragments(){ Class[] clz={NewsFragment.class,ReadFragment.class,VideoFragment.class,FoundFragment.class,OwnerFragment.class}; return clz; } }
footer_tabs.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="5dp" android:background="#F6F6F6" > <ImageView android:id="@+id/ivImg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" /> <TextView android:id="@+id/tvTab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/ivImg" android:textColor="#AEAEAE" android:text="新闻" android:layout_marginTop="2dp"/> </RelativeLayout>