Tab可以用于选择同一个activity的不同视图,可以以用于选择两个完全不同的activity
创建一个Tab Layout ,必须有一个TabHost 和一个TabWidge, TabHost必须为根节点,它拥有一个TabWidge来呈现tabs和一个FrameLayout来呈现内容。
需要用一个LinearLayout来安置TabWidget和FrameLayou
以下是实现Tab的XML 配置
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent" android:layout_height="wrap_content" />
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="5dp" >
</FrameLayout>
</LinearLayout>
</TabHost>
public class HelloTabWidget extends TabActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tab);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost 获取一个TabHost 对象
TabHost.TabSpec spec; // Resusable TabSpec for each tab Tab指示器
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, ArtistsActivity.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("artists"); //实例化一个分页
spec.setIndicator("Artists", res.getDrawable(R.drawable.ic_tab_artists));//设置标题内容和图标
spec.setContent(intent); //设置Tab内容
tabHost.addTab(spec); // 添加一个分页对象
//以下代码重复
intent = new Intent().setClass(this, AlbumsActivity.class);
spec = tabHost.newTabSpec("albums").setIndicator("Albums",
res.getDrawable(R.drawable.ic_tab_artists_grey)).setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, SongsActivity.class);
spec = tabHost.newTabSpec("songs").setIndicator("Songs",
res.getDrawable(R.drawable.ic_tab_artists_white)).setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(2);
}
实例化3个 Activity
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
TextView textView=new TextView(this);
textView.setText("This is the Albums tab");//另外两个修改内容
setContentView(textView); //用View来填充activity内容
}
最后效果