现在的位置: 首页 > 移动开发 > 正文

Android选项卡的几种实现方法

2019年07月29日 移动开发 ⁄ 共 6305字 ⁄ 字号 评论关闭

最近在解决TabActivity过期的问题时,发现Android中选项卡有几种实现方法:继承TabActivity,继承ActivityGroup,直接继承Activity和继承FragmentActivity。其中TabActivity在API 13(Android 3.2)被标记为过期,ActivityGroup在API 14(Android 4.0)被标记为过期,目前google推荐使用的是Fragment,也就是继承FragmentActivity。虽然TabActivity和ActivityGroup被标记为过期,已经不推荐使用,但在要求不是很高的时候用起来还是比使用Fragment要方便。

使用TabActivity实现选项卡可以不需要定义布局文件,实现案例如下:

[java]

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
package yuchu.appmanager; 
     
import android.app.TabActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Window; 
import android.widget.TabHost; 
     
@SuppressWarnings("deprecation"
public class MainTabActivity extends TabActivity
     
    private Intent
mAIntent; 
    private Intent
mBIntent; 
     
    public void onCreate(Bundle
savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     
        this.mAIntent
new Intent(this,
ShowAppGrid.
class); 
        this.mBIntent
new Intent(this,
ShowRunApps.
class); 
     
        TabHost
tabhost = getTabHost(); 
     
        tabhost.addTab(tabhost.newTabSpec("tab1").setIndicator("所有资源").setContent(this.mAIntent)); 
        tabhost.addTab(tabhost.newTabSpec("tab2").setIndicator("正在运行").setContent(this.mBIntent)); 
    
package yuchu.appmanager;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import android.widget.TabHost;
@SuppressWarnings("deprecation")
public class MainTabActivity extends TabActivity
{
private Intent
mAIntent;
private Intent
mBIntent;
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.mAIntent
new Intent(this,
ShowAppGrid.
class);
this.mBIntent
new Intent(this,
ShowRunApps.
class);
TabHost
tabhost = getTabHost();
tabhost.addTab(tabhost.newTabSpec("tab1").setIndicator("所有资源").setContent(this.mAIntent));
tabhost.addTab(tabhost.newTabSpec("tab2").setIndicator("正在运行").setContent(this.mBIntent));
}
}

使用ActivityGroup实现选项卡也相当方便,布局文件如下:

[html]

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
<?xml version="1.0" encoding="utf-8"?> 
    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" />   
        <FrameLayout 
            android:id="@android:id/tabcontent" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent">   
        </FrameLayout>   
    </LinearLayout>   
</TabHost>  
<?xml version="1.0" encoding="utf-8"?>
    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" /> 
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
        </FrameLayout
    </LinearLayout>

</TabHost> 代码如下:

[java]

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 yuchu.appmanager; 
     
import android.app.ActivityGroup; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.Window; 
import android.widget.TabHost; 
     
@SuppressWarnings("deprecation"
public class MainTabActivity extends ActivityGroup
    private TabHost
tabHost; 
    private Intent
mAIntent; 
    private Intent
mBIntent; 
    @Override
    public void onCreate(Bundle
savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
        setContentView(R.layout.maintabs); 
             
        this.mAIntent
new Intent(this,
ShowAppGrid.
class); 
        this.mBIntent
new Intent(this,
ShowRunApps.
class); 
        tabHost=(TabHost)findViewById(android.R.id.tabhost);     
        tabHost.setup(); 
        tabHost.setup(this.getLocalActivityManager());   
        LayoutInflater
inflater = LayoutInflater.from(
this);       
        inflater.inflate(R.layout.showgrid,
tabHost.getTabContentView());   
        inflater.inflate(R.layout.showrunning,
tabHost.getTabContentView()); 
         
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("所有资源").setContent(this.mAIntent)); 
        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("正在运行").setContent(this.mBIntent));   
    
package yuchu.appmanager;
import android.app.ActivityGroup;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Window;
import android.widget.TabHost;
@SuppressWarnings("deprecation")
public class MainTabActivity extends ActivityGroup
{
private TabHost
tabHost;
private Intent
mAIntent;
private Intent
mBIntent;
    @Override
    public void onCreate(Bundle
savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.maintabs);
           
        this.mAIntent
new Intent(this,
ShowAppGrid.
class);
this.mBIntent
new Intent(this,
ShowRunApps.
class);
        tabHost=(TabHost)findViewById(android.R.id.tabhost);
        tabHost.setup();
        tabHost.setup(this.getLocalActivityManager()); 
        LayoutInflater
inflater = LayoutInflater.from(
this);  
        inflater.inflate(R.layout.showgrid,
tabHost.getTabContentView()); 
        inflater.inflate(R.layout.showrunning,
tabHost.getTabContentView());
       
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("所有资源").setContent(this.mAIntent));
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("正在运行").setContent(this.mBIntent));
    }
}

抱歉!评论已关闭.