package com.jiuqi.ui.widget; import java.util.Set; import com.jqyd.uilib.R; import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; import android.widget.TabHost.TabSpec; import android.widget.TabWidget; import android.widget.TextView; public abstract class TabHostActivity extends TabActivity{ private TabHost mTabHost; private TabWidget mTabWidget; private LayoutInflater mLayoutflater; private OnTabChangeListener MyOnTabChangeListener = new OnTabChangeListener(){ @Override public void onTabChanged(String tabId){ whenTabChanged(tabId); } }; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); // set theme because we do not want the shadow setContentView(R.layout.njt_tab_host); mLayoutflater = getLayoutInflater(); mTabHost = getTabHost(); mTabHost.setOnTabChangedListener(MyOnTabChangeListener); mTabWidget = getTabWidget(); mTabWidget.setStripEnabled(false); // need android2.2 prepare(); initTop(); initTabSpec(); } private void initTop(){ View child = getTop(); if(null != child){ LinearLayout layout = (LinearLayout)findViewById(R.id.tab_top); layout.setVisibility(View.VISIBLE); layout.addView(child); } } private void initTabSpec(){ Set<String> keys = getTabItemKeys(); for(String key : keys){ // set text view View tabItem = mLayoutflater.inflate(R.layout.njt_tab_item, null); if(tabItem instanceof TextView){ TextView tvTabItem = (TextView)tabItem; //tabItem.findViewById(R.id.tab_item_tv) TabItem tab = getTabItemByTitle(key); // set tab spec setTabItemNormalState(tvTabItem, tab); TabSpec tabSpec = mTabHost.newTabSpec(tab.getTitle()); tabSpec.setIndicator(tabItem); tabSpec.setContent(getTabItemIntent(tab)); mTabHost.addTab(tabSpec); } } } /** 在初始化界面之前调用 */ protected void prepare(){ // do nothing or you override it } /** 自定义头部布局 */ protected View getTop(){ // do nothing or you override it return null; } protected int getTabCount(){ return mTabHost.getTabWidget().getTabCount(); } /** 设置TabItem的图标和标题等*/ abstract protected void setTabItemNormalState(TextView textView, TabItem tab); abstract protected TabItem getTabItemByTitle(String key); abstract protected Intent getTabItemIntent(TabItem tab); abstract protected Set<String> getTabItemKeys(); abstract protected void whenTabChanged(String tabTitle); protected void setCurrentTab(int index){ mTabHost.setCurrentTab(index); } protected void focusCurrentTab(int index){ mTabWidget.focusCurrentTab(index); } }