总结Android中TabActivity 的使用方法


如果希望在Activity中出现多个Tab可以点击,并且点击每个Tab之后跳转到相应的Activity,可以使用TabActivity类。以下演示一个简单的范例。

首先要定义一个继承TabActivity的类,这里我们定义MainActivity,并且使其作为应用程序的入口。其代码为

  1. package com.myAndroid.tabtest;  
  2.   
  3. import android.app.TabActivity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.widget.TabHost;  
  7. import android.widget.TabHost.TabSpec;  
  8.   
  9. public class MainActivity extends TabActivity {  
  10.     private TabHost m_tabHost;  
  11.     /** Called when the activity is first created. */  
  12.     @Override  
  13.     public void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         setContentView(R.layout.tabs);  
  16.           
  17.         //getTabHost返回的TabHost用于装载tabs  
  18.         m_tabHost = getTabHost();  
  19.           
  20.         //add tabs,这里用于添加具体的Tabs,并用Tab触发相应的Activity  
  21.         addOneTab();  
  22.         addTwoTab();  
  23.         addThreeTab();  
  24.         addFourTab();  
  25.     }  
  26.       
  27.     public void addOneTab(){  
  28.         Intent intent = new Intent();  
  29.         intent.setClass(MainActivity.this, OneActivity.class);  
  30.           
  31.         TabSpec spec = m_tabHost.newTabSpec("One");  
  32.         spec.setIndicator(getString(R.string.one), null);  
  33.         spec.setContent(intent);          
  34.         m_tabHost.addTab(spec);  
  35.     }  
  36.       
  37.     public void addTwoTab(){  
  38.         Intent intent = new Intent();  
  39.         intent.setClass(MainActivity.this, TwoActivity.class);  
  40.           
  41.         TabSpec spec = m_tabHost.newTabSpec("Two");  
  42.         spec.setIndicator(getString(R.string.two), null);  
  43.         spec.setContent(intent);          
  44.         m_tabHost.addTab(spec);  
  45.     }  
  46.     public void addThreeTab(){  
  47.         Intent intent = new Intent();  
  48.         intent.setClass(MainActivity.this, ThreeActivity.class);  
  49.           
  50.         TabSpec spec = m_tabHost.newTabSpec("Three");  
  51.         spec.setIndicator(getString(R.string.three), null);  
  52.         spec.setContent(intent);          
  53.         m_tabHost.addTab(spec);  
  54.     }  
  55.     public void addFourTab(){  
  56.         Intent intent = new Intent();  
  57.         intent.setClass(MainActivity.this, FourActivity.class);  
  58.           
  59.         TabSpec spec = m_tabHost.newTabSpec("Four");  
  60.         spec.setIndicator(getString(R.string.four), null);  
  61.         spec.setContent(intent);          
  62.         m_tabHost.addTab(spec);  
  63.     }  
  64. }  

可以看到在MainActivity中,我们使用getTabHost()返回一个TabHost,而TabHost正是用来添加Tabs的。这里我们添加了4个Tabs,使用4个函数完成:addOneTab(),addTwoTab(),addThreeTab(),addFourTab(). 在这4个函数中我们使用TabSpec来描述每个的Tab,并且设置Intent,完成点击该Tab时跳转到相应的Activity的功能。

当然,这个应用还有一个关键点,就是这里的布局tabs.xml.其代码为:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <TabHost  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:id="@android:id/tabhost"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent">  
  7.     <LinearLayout  
  8.         android:orientation="vertical"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="fill_parent">  
  11.      
  12.         <TabWidget android:id="@android:id/tabs"  
  13.             android:layout_width="fill_parent"  
  14.             android:layout_height="wrap_content"  
  15.             android:paddingLeft="1dip"  
  16.             android:paddingRight="1dip"  
  17.             android:paddingTop="4dip"  
  18.         />  
  19.           
  20.         <FrameLayout android:id="@android:id/tabcontent"  
  21.             android:layout_width="fill_parent"  
  22.             android:layout_height="0dip"  
  23.             android:layout_weight="1"  
  24.         />       
  25.     </LinearLayout>  
  26. </TabHost>  

注意在tabs.xml中,定义TabHost标签,并且其中有一个TabWidget标签是装载整个Tabs的,其id必须为android:id/tabs

完成这些工作之后,接下来的任务就是定义前面的几个Activity,OneActivity,TwoActivity,ThreeActivity,FourActivity.这些Activity由大家根据自己的功能设定。

相关内容