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);
}
}