`
iaiai
  • 浏览: 2197195 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 控件之切换卡(TabWidget)

阅读更多
TabWidget类似于Android 中查看电话薄的界面,通过多个标签切换显示不同内容。要实现这一效果,首先要了解TabHost,它是一个用来存放多个Tab标签的容器。每一个Tab都可以对应自己的布局,比如,电话薄中的Tab布局就是一个List的线性布局了。
   要使用TabHost,首先需要通过getTabHost方法来获取TabHost的对象,然后通过addTab方法来向TabHost中添加 Tab。当然每个Tab在切换时都会产生一个事件,要捕捉这个事件需要设置TabActivity的事件监听 setOnTabChangedListener。我们先来看看运行效果吧。



main.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">
		<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="Linux"
				android:textColor="#FF0000" />
			<TextView android:id="@+id/textview2" android:layout_width="fill_parent"
				android:layout_height="fill_parent" android:textColor="#385E0F"
				android:text="MAC" />
			<TextView android:id="@+id/textview3" android:layout_width="fill_parent"
				android:layout_height="fill_parent" android:textColor="#1E90FF"
				android:text="Window" />
		</FrameLayout>
	</LinearLayout>
</TabHost>


IaiaiActivity.java类:
package com.iaiai.activity;

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;

/**
 * 
 * <p>
 * Title: IaiaiActivity.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-6-26
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class IaiaiActivity extends TabActivity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// 取得TabHost对象
		TabHost xh_TabHost = getTabHost();

		/**
		 * 为TabHost添加标签 新建一个newTabSped(newTabSpec) 设置其标签和图标(setIndicator)
		 * 设置内容(setContent)
		 */
		// TabSpec 是TabHost的内部类 TabHost对象的 newTabSpec()方法返回一个TabSpec对象 这个关系要搞清楚
		/*
		 * 源码里边是这么写的 public TabSpec newTabSpec(String tag) { return new
		 * TabSpec(tag); }
		 */

		xh_TabHost.addTab(xh_TabHost
				.newTabSpec("tab_test1")
				// setIndicator()此方法用来设置标签和图表
				.setIndicator("TAB 1",
						getResources().getDrawable(R.drawable.img1))
				// 指定内容为一个TextView --->public TabHost.TabSpec setContent (int
				// viewId) 此方法需要一个 viewId 作为参数
				.setContent(R.id.textview1));

		xh_TabHost.addTab(xh_TabHost
				.newTabSpec("tab_test2")
				.setIndicator("TAB 2",
						getResources().getDrawable(R.drawable.img2))
				.setContent(R.id.textview2));

		xh_TabHost.addTab(xh_TabHost
				.newTabSpec("tab_test3")
				.setIndicator("TAB 3",
						getResources().getDrawable(R.drawable.img3))
				.setContent(R.id.textview3));

		// 设置TabHost的背景颜色
		xh_TabHost.setBackgroundColor(Color.argb(150, 22, 70, 150));

		// 设置TabHost的背景图片资源
		xh_TabHost.setBackgroundResource(R.drawable.bg2);

		// 设置当前显示哪一个标签 我的理解就是当你第一次启动程序默认显示那个标签 这里是指定的选项卡的ID从0开始
		xh_TabHost.setCurrentTab(0);

		// 标签切换事件处理,setOnTabChangedListener 注意是标签切换事件不是点击事件
		// 就是从一个标签切换到另外一个标签会触发的事件
		xh_TabHost.setOnTabChangedListener(new OnTabChangeListener() {
			@Override
			public void onTabChanged(String tabId) {
				// 定义一个弹出式的对话框
				Dialog dialog = new AlertDialog.Builder(IaiaiActivity.this)
						.setTitle("提示")
						.setMessage("当前选中了:" + tabId + "标签")
						.setPositiveButton("确定",
								new DialogInterface.OnClickListener() {
									@Override
									public void onClick(DialogInterface dialog,
											int which) {
										// 取消对话框
										dialog.cancel();
									}

								}).create();// 创建出一个“确定”按钮
				// 启动此对话框并且显示在屏幕上
				dialog.show();
			}
		});
	}

}
  • 大小: 31.2 KB
分享到:
评论
2 楼 xiaolw666666 2012-08-23  
好东西
1 楼 gf_crazy 2011-11-01  
请问 LZ 有关闭 tab 时,会触发的事件吗?
比如返回键。

相关推荐

    Android应用源码之36.TabWidget控件学习.zip

    这个"Android应用源码之36.TabWidget控件学习.zip"压缩包提供了关于TabWidget的源码示例,非常适合开发者进行参考和学习。 TabWidget是Android自带的一种布局组件,它通常与TabHost一起使用,实现类似浏览器那样的...

    Android_TabHost_TabWidget选项卡总结

    `TabHost`作为容器,管理着`TabWidget`和一个`FrameLayout`,而`TabWidget`则是展示选项卡的控件。 1. **TabHost的使用** - `TabHost`是`FrameLayout`的特殊形式,它包含两个子元素:`TabWidget`和`FrameLayout`。...

    Android应用源码之36.TabWidget控件学习-IT计算机-毕业设计.zip

    本资源“Android应用源码之36.TabWidget控件学习”是一个适用于毕业设计的学习示例,旨在帮助开发者深入理解TabWidget的用法及其在实际项目中的应用。 TabWidget是Android提供的一个标签栏控件,它通常与ViewPager...

    TabWidget控件.

    TabWidget控件是Android开发中常见的一种组件,主要用于在用户界面上创建标签式视图,让用户可以在多个页面间轻松切换,常用于应用的各种设置界面或者数据分类展示。它结合了TabHost和ViewSwitcher的概念,提供了...

    应用源码之36.TabWidget控件学习.zip

    总之,这份"应用源码之36.TabWidget控件学习"资料提供了深入理解Android TabWidget的实践机会。通过学习和研究源码,开发者可以更熟练地运用这个组件,提升自己的Android开发水平,同时也能为毕业设计提供有价值的...

    android总结TabWidget效果.zip

    在Android移动开发中,`TabWidget` 是一个非常常见的组件,用于实现多页面间的切换,通常与`ViewPager` 结合使用来创建一个可滑动的标签页布局。本总结将深入探讨`TabWidget`的基本使用、自定义以及与`ViewPager`的...

    android选项卡demo

    2. **TabWidget**:TabWidget是显示选项卡的实际控件,每个选项卡代表一个可以切换的页面。开发者可以通过TabHost的setup()方法将TabWidget与FrameLayout关联起来。 3. **添加选项卡**:开发者需要使用TabHost的...

    Android入门第十一篇之TabHost,TabWidget.docx

    总的来说,Android的TabHost和TabWidget提供了一种方便的方式,让用户能够在一个屏幕上轻松地在多个视图之间切换,增加了应用程序的交互性和用户体验。然而,随着Android版本的发展,TabHost的使用逐渐被Fragment和...

    android 控件

    总的来说,Android控件的学习是Android开发的基础,熟练掌握TabWidget、ListView和ImageView的使用,将有助于你创建出功能强大且用户友好的应用程序。在实践中不断探索和实践,你将能够更好地应对各种UI需求,为用户...

    36.TabWidget控件学习.rar

    在Android开发中,TabWidget控件是一个非常常用且重要的组件,尤其在构建具有多个视图切换功能的用户界面时。`TabWidget`是Android提供的一个Tab栏布局,它允许用户通过点击不同的Tab来切换不同的页面或者视图。在这...

    android控件之tab,tabhost用法实例源码

    在Android开发中,Tab布局和TabHost是创建多页面、多视图应用界面的重要组件,它们可以帮助用户在不同的功能之间轻松切换。本文将详细介绍Tab和TabHost的使用方法,并通过一个实际的源码实例来加深理解。 首先,Tab...

    Android TabHost控件讲解

    在Android开发中,TabHost控件是一个非常重要的组件,它被用来实现标签页式界面,让用户可以在多个视图之间切换,提升应用的交互体验。TabHost通常与TabWidget和FrameLayout一起使用,创建一个带有可点击标签的界面...

    android 左右滑动切换页面

    ViewPager是Android支持库中的一个控件,它允许用户通过水平滑动来浏览多个页面。ViewPager通常与PagerAdapter一起使用,PagerAdapter是适配器类,负责为ViewPager提供页面内容。当用户在ViewPager中滑动时,...

    Android tabhost控件

    在Android开发中,`TabHost`是一个非常重要的组件,它被用来实现标签栏导航功能,让用户可以在多个界面之间轻松切换。本篇文章将详细介绍`TabHost`的使用方法,并通过示例代码来帮助你理解其工作原理。 ### 1. ...

    android tab控件使用

    在Android开发中,Tab控件通常用于创建多页面的用户界面,使得用户可以在不同的功能或内容之间轻松切换。本文将详细介绍如何在Android应用中使用Tab控件,特别适合初学者入门。 首先,我们需要理解TabHost和...

    Android Studio多个按钮跳转多个页面,利用选项卡功能实现

    要实现选项卡功能,Android提供了`TabHost`和`TabWidget`组件,但现在更推荐使用`ViewPager`配合`TabLayout`。`ViewPager`用于滑动切换页面,而`TabLayout`则负责显示选项卡。首先,确保在项目中添加`design`库依赖...

    自定义Android的TabHost控件样式

    本文将深入探讨如何自定义Android的TabHost控件样式。 首先,我们从基础开始。TabHost是Android提供的一个布局容器,它包含一个TabWidget(显示各个Tab)和一个FrameLayout(用于显示被选中的Tab的内容)。默认的...

    android Tab控件使用的最简纯净Demo.zip

    在Android开发中,Tab控件通常用于实现应用的多页面切换功能,为用户提供直观的导航。本Demo旨在展示如何在Android应用中实现一个简洁且纯粹的Tab切换效果。以下是关于这个"android Tab控件使用的最简纯净Demo"的...

Global site tag (gtag.js) - Google Analytics