总结Android中TabActivity 的使用方法

转自:http://www.itivy.com/android/archive/2011/6/27/android-tabactivity-usage.html

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<? 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"
      
         < TabWidget android:id = "@android:id/tabs" 
             android:layout_width = "fill_parent" 
             android:layout_height = "wrap_content" 
             android:paddingLeft = "1dip" 
             android:paddingRight = "1dip" 
             android:paddingTop = "4dip" 
         /> 
           
         < FrameLayout android:id = "@android:id/tabcontent" 
             android:layout_width = "fill_parent" 
             android:layout_height = "0dip" 
             android:layout_weight = "1" 
         />      
     </ LinearLayout
</ TabHost >

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

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

你可能感兴趣的:(android,layout,null,import,tabs,encoding)