Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 586|回复: 0

android 切换卡(TabWidget)-  Android学习

[复制链接]

该用户从未签到

发表于 2011-10-24 14:46:19 | 显示全部楼层 |阅读模式
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

    androidrientation="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中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。这里最重要的特点就是 后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部分或全部挡住 我们也正是利用了它的这一特点。 大家看看运行效果就知道咋回事了。

下边是 Activity 类
java代码
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();

                        }

                });

        }

}
复制代码平台:android 2.0  APILEVEL 5  源码见附件
xh_04_29_Test.rar (1.15 MB, 下载次数: 15)
回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:46:22 | 显示全部楼层

Re:android

拿去了啊
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:46:27 | 显示全部楼层

Re:android

:D:D:D:D:D:D:D
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:46:31 | 显示全部楼层

Re:android

我顶。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:46:34 | 显示全部楼层

Re:android

下来学习学习....
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:46:38 | 显示全部楼层

Re:android

不错 比较实用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 11:34 , Processed in 0.360885 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表