TabWidget/TabHost的两种使用方法

Android界面开发之切换卡TabWidget用法

TabWidget类似Android中查看电话簿的界面,通过多个标签切换显示不同的内容。要实现这一效果,首先要了解TabHost ,它是一个用来存放多个Tab标签的容器。每一个Tab都可以对应自己的布局,比如,电话簿中的Tab布局就是一个List的线性布局了。

要使用TabHost ,首先需要通过getTabHost 方法来获取TabHost的对象,然后通过addTab方法来向TabHost中添加Tab。当然每个Tab在切换时都会产生一个事件,要捕捉这个事件需要设置TabActivity的事件监听沁tsetOnTabChangedListener。下面我们来看一个具体示例,运行效果如图4-65所示。当我们点击个Tab切换时,捕捉事件如图4-66所示。

首先我们来看布局中如何实现,如下代码所示。其中Tab对应的布局通过FrameLayout作为根布局,然后分别放置了3个TextView控件来显示每个Tab标签的内容。

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
<? 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" />
         < FrameLayout
             android:id = "@android:id/tabcontent"
             android:layout_width = "fill_parent"
             android:layout_height = "fill_parent" >
             < TextView
                 android:id = "@+id/textview1"
                 android:layout_width = "fill_parent"
                 android:layout_height = "fill_parent"
                 android:text = "this is a tab" />
             < TextView
                 android:id = "@+id/textview2"
                 android:layout_width = "fill_parent"
                 android:layout_height = "fill_parent"
                 android:text = "this is another tab" />
             < TextView
                 android:id = "@+id/textview3"
                 android:layout_width = "fill_parent"
                 android:layout_height = "fill_parent"
                 android:text = "this is a third tab" />
         </ FrameLayout >
     </ LinearLayout >
</ TabHost >
TabWidget的使用需要继承自TabActivity类,并实现tsetOnTabChangedListener的onTabChanged方法来监听Tab的改变,如下代码所示:
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
65
66
67
68
69
70
71
package com.yarin.android.Examples_04_29;
 
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
 
public class Activity01 extends TabActivity
{
     //声明TabHost对象
     TabHost mTabHost;
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState)
     {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.main);
         
         //取得TabHost对象
         mTabHost = getTabHost();
         
         /* 为TabHost添加标签 */
         //新建一个newTabSpec(newTabSpec)
         //设置其标签和图标(setIndicator)
         //设置内容(setContent)
         mTabHost.addTab(mTabHost.newTabSpec( "tab_test1" )
                 .setIndicator( "TAB 1" ,getResources().getDrawable(R.drawable.img1))
                 .setContent(R.id.textview1));
         mTabHost.addTab(mTabHost.newTabSpec( "tab_test2" )
                 .setIndicator( "TAB 2" ,getResources().getDrawable(R.drawable.img2))
                 .setContent(R.id.textview2));
         mTabHost.addTab(mTabHost.newTabSpec( "tab_test3" )
                 .setIndicator( "TAB 3" ,getResources().getDrawable(R.drawable.img3))
                 .setContent(R.id.textview3));
         
         //设置TabHost的背景颜色
         mTabHost.setBackgroundColor(Color.argb( 150 , 22 , 70 , 150 ));
         //设置TabHost的背景图片资源
         //mTabHost.setBackgroundResource(R.drawable.bg0);
         
         //设置当前显示哪一个标签
         mTabHost.setCurrentTab( 0 );
         
         //标签切换事件处理,setOnTabChangedListener
         mTabHost.setOnTabChangedListener( new OnTabChangeListener()
         {
             // TODO Auto-generated method stub
             @Override
             public void onTabChanged(String tabId)
             {
                 Dialog dialog = new AlertDialog.Builder(Activity01. this )
                         .setTitle( "提示" )
                         .setMessage( "当前选中:" +tabId+ "标签" )
                         .setPositiveButton( "确定" ,
                         new DialogInterface.OnClickListener()
                         {
                             public void onClick(DialogInterface dialog, int whichButton)
                             {
                                 dialog.cancel();
                             }
                         }).create(); //创建按钮
               
                 dialog.show();
             }           
         });
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值