import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TabHost;
import android.widget.TabWidget;
import android.widget.TextView;
public class TabHostTestttActivity extends Activity {
//Tab三要素
TabHost tabHost=null;
TabWidget tabWidget=null;
FrameLayout fl=null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//第一步,定义tabHost
tabHost=new TabHost(this);
LinearLayout.LayoutParams lp_tabHost=new LinearLayout.LayoutParams( -1,-1);
tabHost.setLayoutParams(lp_tabHost);
//第二步,定义tabWidget
tabWidget=new TabWidget(this);
tabWidget.setId(android.R.id.tabs);//注意ID的设置
tabWidget.setLayoutParams(new LinearLayout.LayoutParams(-1,-2));
//第三步,定义fl
fl=new FrameLayout(this);
fl.setId(android.R.id.tabcontent);//注意ID的设置
fl.setLayoutParams(new LinearLayout.LayoutParams(-1,-2));
TextView tv1=new TextView(this);
tv1.setId(55);
tv1.setTextColor(Color.BLACK);
tv1.setText("hello1");
TextView tv2=new TextView(this);
tv2.setId(66);
tv2.setTextColor(Color.WHITE);
tv2.setText("hello2");
fl.addView(tv1);
fl.addView(tv2);
//第四步
tabHost.addView(tabWidget);
tabHost.addView(fl);
//重点就在什么时候调用setup()函数,在这里就在这里
//必须有以上四步的基础,才能调用setup()
tabHost.setup();
//重点:此步骤只能在setup()之后进行
tabHost.addTab(tabHost.newTabSpec("tag1").setIndicator("indicator1").setContent(55));
tabHost.addTab(tabHost.newTabSpec("tag2").setIndicator("指示2",this.getResources().getDrawable(R.drawable.ic_launcher)).setContent(66));
/*
* 上一句程序等同如下:
*TabSpec ts=tabHost.newTabSpec("tag2");
*ts.setIndicator("指示2",this.getResources().getDrawable(R.drawable.ic_launcher));
*ts.setContent(66);
*tabHost.addTab(ts);
*/
setContentView(tabHost);
}
}
——————
——————
以上图示,有点选项卡的影子了,但是内容是现在是左上角,为什么呢?
因为tabhost本身就是framelayout的扩展,所以添加tabwidget和fl的内容都是默认在左上角重叠显示的,那么如何让tabwidget和fl分离呢?
办法就是在导入一个布局,可以是linearlayout或者relativelayout等,成为新的布局关系,以linearlayout为例,定义LinearLayout mainView
tabHost————mainView————(tabWidget、fl),见下篇