现在,先加入LinearLayout mainView,布局之间的关系为tabHsot——mainView——(tabWidget、fl),得如下结果
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;
//添加一个
LinearLayout mainView=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.YELLOW);
tv1.setText("hello1");
TextView tv2=new TextView(this);
tv2.setId(66);
tv2.setTextColor(Color.WHITE);
tv2.setText("hello2");
fl.addView(tv1);
fl.addView(tv2);
//第四步,定义mainView
mainView=new LinearLayout(this);
mainView.setId(99);
LinearLayout.LayoutParams lp_mainView=new LinearLayout.LayoutParams(-1,-1);
mainView.setLayoutParams(lp_mainView);
//设置垂直排列模式,这样tabwidget和fl就是以上一下的关系了
mainView.setOrientation(LinearLayout.VERTICAL);
//现在把tabWidget和fl加入到mainview,而不是tabHost里面
mainView.addView(tabWidget);
mainView.addView(fl);
//第五步,tabHost添加mainView
tabHost.addView(mainView);
//同样,以上五步之后,才能调用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));
setContentView(tabHost);
}
}
现在,见到了常见的LinearLayout mainView,是否可以在mainView加入其他view呢,可以的
在第五步之前添加如下代码
//加入一个View
TextView tvx=new TextView(this);
tvx.setId(897);
tvx.setLayoutParams(new LinearLayout.LayoutParams(-1,-2));
tvx.setBackgroundColor(Color.BLUE);
tvx.setText("hihihih");
mainView.addView(tvx);
结果如下图所示,新添加的tvx在fl下面
实际上,mainView如果是RelativeLayout,那么用户可以更加自如的放置tabwidget和fl的位置了,而且tabWidget和fl并不一定要在同一个父容器中,如下,见下文