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

android 切换卡(TabWidget)

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







布局文件
<?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>
这里稍有不同,用的是 TabHost   然后 LinearLayout里边套了一个 FrameLayout
LinearLayout 就不说了 这里说一下 FrameLayout 的特点 FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。这里最重要的特点就是 后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部分或全部挡住 我们也正是利用了它的这一特点。 大家看看运行效果就知道咋回事了。这里有个关于布局对象的简单讲解http://blog.csdn.net/Android_Tutor/archive/2009/11/06/4779097.aspx

下边是 Activity 类
package xiaohang.zhimeng;

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;

//这里注意一下,继承的是TabActivity 不是Activity
public class Activity01 extends TabActivity {

	// 声明TabHost对象
	TabHost xh_TabHost;

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

		// 取得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(Activity01.this)
						.setTitle("提示").setMessage("当前选中了:" + tabId + "标签")
						.setPositiveButton("确定",
								new DialogInterface.OnClickListener() {
									@Override
									public void onClick(DialogInterface dialog,
											int which) {
										// 取消对话框
										dialog.cancel();
									}

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

运行效果图
http://link.youzhaopian.com/pplink/3hOnOpzDj3yNvHC/fNqN0eCu+LN5cMyn
http://link.youzhaopian.com/pplink/3hOnOpzDj3wdXwwq9duTmZfcaqdCYIG3
http://link.youzhaopian.com/pplink/3hOnOpzDj3x3QPfNBm0cXl6jF4j50MRi

平台:android 2.0  APILEVEL 5  源码见附件
  • 大小: 46.7 KB
  • 大小: 41.9 KB
  • 大小: 41.3 KB
2
1
分享到:
评论
5 楼 Cb123456 2015-05-27  
很好啊,写的很好,可以把你的当模板了
4 楼 ihitu 2015-03-27  
                   
3 楼 ihitu 2015-03-27  
[flash=200,200][url][flash=200,200]
[b][i][u]
引用
[list]
[*][img][/img]
[/list][/u][/i][/b]
[/flash][/url][/flash]|||||
||||
||||
|||
|||
||
||
|
|
2 楼 mzqhappylife 2012-04-30  
好文章,顶
1 楼 sxd_0524 2011-09-28  
这个有什么用啊??在实际应用当中~~

相关推荐

    Android切换卡TabWidget用法示例

    本文实例讲述了Android切换卡TabWidget用法。分享给大家供大家参考,具体如下: Tab选项卡类似与电话本的界面,通过多个标签切换不同的内容,要实现这个效果,首先要知道TabHost,它是一个用来存放多个Tab标签的容器...

    Android TabHost TabWidget 切换卡

    在Android开发中,`TabHost`和`TabWidget`是两个关键组件,它们常用于创建具有多标签(或称为卡片)界面的应用。这样的设计允许用户通过点击不同的标签来浏览和切换不同的视图或功能模块。下面我们将深入探讨这两个...

    Android 控件之切换卡(TabWidget)

    在Android开发中,`TabWidget`是一个非常常用的控件,它允许用户在多个视图间进行切换,通常与`ViewPager`结合使用,实现类似标签页的功能。`TabWidget`是Android早期版本中的一种布局组件,而在现代Android开发中,...

    TabWidget切换卡demo

    在Android开发中,`TabWidget`是用于创建一个多选项卡界面的组件,它允许用户通过点击不同的标签在多个视图之间进行切换。`TabWidget`通常与`FrameLayout`或`ViewSwitcher`配合使用,以实现内容区域的动态切换。在本...

    android 切换卡

    这个文件定义了一个`TabHost`,它是Android切换卡的基础组件。`TabHost`内嵌了一个`LinearLayout`,包含了`TabWidget`(用于显示切换卡标签)和`FrameLayout`(用于展示切换卡内容)。`TabWidget`的宽度设置为`fill_...

    Android_TabHost_TabWidget选项卡总结

    `TabWidget`显示选项卡,`FrameLayout`(通常命名为`android.R.id.tabspec`)用于显示每个选项卡对应的内容。 - 要使用`TabHost`,首先需要继承`TabActivity`,然后通过`getTabHost()`获取`TabHost`实例。 - 使用`...

    切换卡(TabWidget)

    标题“切换卡(TabWidget)”表明我们将讨论如何利用`TabWidget`来实现标签页式界面。 在Android布局文件中,`TabWidget`是用来放置各个标签的容器,而每个标签则对应一个单独的界面或视图。描述中提到,“使用...

    android总结TabWidget效果.zip

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

    Android编程之TabWidget选项卡用法实例分析

    ndroid:id="@+id/ringtone" android:layout_... TabWidget是Android早期实现选项卡功能的主要方式,虽然现在有其他更现代的解决方案,但在某些场景下,理解并掌握TabWidget的使用仍然是Android开发的基础技能之一。

    android选项卡demo

    在本“android选项卡demo”中,开发者已经简单实现了选项卡的切换、颜色设置等基本功能。这个Demo主要涉及到的是TabHost组件的使用,它是Android系统提供的一种用于创建选项卡式布局的工具。下面将详细讲解与这个...

    Android TabWidget切换卡的实现应用

    本文将深入探讨如何在Android应用中实现TabWidget的切换卡功能,以及涉及到的关键组件和技术。 首先,我们需要理解TabHost的角色。TabHost是一个容器,它能容纳多个Tab标签,并管理这些标签与对应的活动或布局之间...

    TabWidget实现不同Activity的切换

    在Android开发中,`TabWidget`是用于创建一个多选项卡界面的组件,它常与`FrameLayout`或`ViewPager`一起使用,以实现不同`Activity`间的切换。本篇文章将详细探讨如何使用`TabWidget`来实现这个功能,并提供相关的...

    Android平台下切换选项卡的功能实现

    在Android平台上,实现切换选项卡的功能是构建用户界面(UI)的一个常见需求,尤其是在开发复杂的移动应用时。这种功能能够帮助用户在多个视图或功能之间轻松导航,提高用户体验。在本篇中,我们将深入探讨如何在...

    android 两种TAB选项卡切换功能项目

    在Android应用开发中,选项卡(TAB)切换功能是用户界面设计中常见且重要的部分,它可以帮助用户在多个视图之间轻松导航。本项目提供了两种不同的实现方式来创建TAB选项卡切换,使得开发者可以根据需求选择适合的...

    Android TabHost+ScrollView实现项卡切换+下拉显示头部效果 源码

    在Android应用开发中,创建一个具有可滚动内容和选项卡切换功能的用户界面是一个常见的需求。本示例项目,"Android TabHost+ScrollView实现项卡切换+下拉显示头部效果 源码",旨在帮助开发者实现这样的功能,提供了...

    两层tabwidget的使用

    在Android开发中,`TabWidget`是用于创建带有选项卡的用户界面的一种组件,它可以方便地展示多个相互关联的内容视图。本教程将深入探讨如何实现两层`TabWidget`的使用,即在一个`TabWidget`中嵌套另一个`TabWidget`...

    android 页卡效果,用tabhost实现最简单的页卡效果

    在Android开发中,页卡效果是一种常见的用户界面设计,它允许用户通过切换不同的标签来查看和操作不同的内容区域。TabHost是Android SDK提供的一种用于创建页卡式布局的组件,可以方便地实现这一功能。本篇文章将...

Global site tag (gtag.js) - Google Analytics