直接上代码:
package com.melon;
import android.app.TabActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.widget.FrameLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TabHost;
import android.widget.TextView;
@SuppressWarnings("deprecation")
public class MyTab2 extends TabActivity {
private TabHost tabHost;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tabHost = getTabHost();
createTabSpec1();
createTabSpec2();
createTabSpec3();
tabHost.setCurrentTab(1);
setContentView(tabHost);
}
private void createTabSpec1() {
//加载布局
LayoutInflater.from(this).inflate(R.layout.tab1, tabHost.getTabContentView());
TabHost.TabSpec tabSpec_map = tabHost.newTabSpec("tab1");
tabSpec_map.setIndicator("计划...", null);
tabSpec_map.setContent(R.id.ll_tab1_root);
tabHost.addTab(tabSpec_map);
}
private void createTabSpec2() {
LayoutInflater.from(this).inflate(R.layout.tab2, tabHost.getTabContentView());
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.fl_tab2_root);
// MapView: 画了一张图片上去
MapView mv = new MapView(this);
frameLayout.addView(mv);
TabHost.TabSpec tabSpec_map = tabHost.newTabSpec("tab2");
tabSpec_map.setIndicator("计划中...", null);
tabSpec_map.setContent(R.id.fl_tab2_root);
tabHost.addTab(tabSpec_map);
// 修改标签字体样式--------拿到标签的控件,就能操作了...
TextView tv = (TextView) tabHost.getTabWidget().getChildAt(1).findViewById(android.R.id.title);
tv.setTextColor(Color.GREEN);
tv.setGravity(Gravity.CENTER);
tv.setTextSize(30);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
tv.setLayoutParams(params );
}
private void createTabSpec3() {
LayoutInflater.from(this).inflate(R.layout.tab3, tabHost.getTabContentView());
TabHost.TabSpec tabSpec_hs = tabHost.newTabSpec("tab3");
tabSpec_hs.setIndicator("已完成...");
tabSpec_hs.setContent(R.id.fl_tab3_root); // 绑定一个新的Layout
tabHost.addTab(tabSpec_hs);
/*
* 这个绑定View的操作必须要重新使用一个新方法来完成,因为Tab的生成是在onCreate()中完成的,onCreate()只被调用一次,
* 但是数据更新操作是需要反复进行的,如果反复调用createTabSpec_hs()则会生成多个tab页,这是我们不希望的,所以单独把
* updata分离出来,数据更新时单独调用此方法就可以了。
*/
updateTabSpec3();
}
/**
* 更新标签内容
*/
private void updateTabSpec3() {
TextView tv = (TextView) findViewById(R.id.tv_tab3_content);
tv.setText("This is tab3");
}
}
效果: