android之tab分页标签的实现方法,Android开发之TabHost组件实例

大家在进行其他语言的编程时应该都见过甚至用过标签组件,Android开发中也经常会用到标签组件。一般情况下如果一屏放不下所有组件,则我们可能会选择滚动视图,另外一种方法就是使用标签组件对屏幕进行分页,单击不同标签显示它对应的内容。Android中的TabHost是标签组件的核心类,也是标签的集合,每一个标签显示一个View或一个Activity。

TabHost简介

所谓的TabHost是提供选项卡(Tab页)的窗口视图容器.此对象包含两个子对象: 一个是使用户可以选择指定标签页的标签的集合;另一个是用于显示标签页内容的 FrameLayout. 选项卡中的个别元素一般通过其容器对象来控制,而不是直接设置子元素本身的值。

常用方法:

addTab(TabHost.TabSpec tabSpec):添加一项 Tab 页

clearAllTabs():清除所有与之相关联的 Tab 页.

getCurrentTab():返回当前 Tab 页.

getTabContentView():返回包含内容的 FrameLayout

newTabSpec(String tag):返回一个与之关联的新的 TabSpec

TabHost开发实例

下面是TabHost组件的一个开发实例,代码如下:

XML/HTML代码<?xmlversion ="1.0"encoding="utf-8"?>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/framebackground">

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:gravity="center_vertical"

android:layout_marginTop="100dp"

android:text="@string/love"

android:textColor="#000000"

android:textSize="20sp"

/>

android:layout_width="220dp"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:gravity="center_vertical"

android:paddingTop="17dp"

android:text="@string/love_text"

android:textColor="#000000"

android:textSize="15sp"

/>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:gravity="center_vertical"

android:layout_marginTop="100dp"

android:text="@string/friendship"

android:textColor="#000000"

android:textSize="20sp"

/>

android:layout_width="220dp"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:gravity="center_vertical"

android:paddingTop="17dp"

android:text="@string/friendship_text"

android:textColor="#000000"

android:textSize="15sp"

/>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:gravity="center_vertical"

android:layout_marginTop="100dp"

android:text="@string/kinship"

android:textColor="#000000"

android:textSize="20sp"

/>

android:layout_width="220dp"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:gravity="center_vertical"

android:paddingTop="17dp"

android:text="@string/kinship_text"

android:textColor="#000000"

android:textSize="15sp"

/>

XML/HTML代码<?xmlversion ="1.0"encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android">

android:id="@+id/love_group">

android:id="@+id/love_item"

android:icon="@drawable/aiqing"

android:title="Love">

XML/HTML代码<?xmlversion ="1.0"encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android">

android:id="@+id/kinship_group">

android:id="@+id/kinship_item"

android:icon="@drawable/qinqing"

android:title="KinShip">

XML/HTML代码<?xmlversion ="1.0"encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android">

android:id="@+id/friendship_group">

android:id="@+id/friendship_item"

android:icon="@drawable/youqing"

android:title="FriendShip">

Java代码packagenet.csdn.blog.androidtoast;

importandroid.app.TabActivity;

importandroid.graphics.Color;

importandroid.os.Bundle;

importandroid.view.LayoutInflater;

importandroid.view.Menu;

importandroid.view.MenuInflater;

importandroid.widget.TabHost;

publicclassTabHostExampleActivityextendsTabActivity {

TabHost mTabHost;

intmMenuTag=0;

Menu mMenu;

staticfinalintmMenuResources[] = {

R.layout.love_menu,

R.layout.friendship_menu,

R.layout.kinship_menu

};

/** Called when the activity is first created. */

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

//获取TabHost

mTabHost=this.getTabHost();

//过滤出TabHost布局

LayoutInflater.from(this).inflate(R.layout.main, mTabHost.getTabContentView(),true);

//为TabHost设置背景颜色

mTabHost.setBackgroundColor(Color.argb(100,30,80,160));

//增加三个选型卡 并设置其图标及绘制布局

mTabHost.addTab(mTabHost.newTabSpec("One")

.setIndicator("", getResources().getDrawable(R.drawable.aiqing))

.setContent(R.id.frist_tab_linearlayout));

mTabHost.addTab(mTabHost.newTabSpec("Two")

.setIndicator("", getResources().getDrawable(R.drawable.youqing))

.setContent(R.id.second_tab_linearlayout));

mTabHost.addTab(mTabHost.newTabSpec("Three")

.setIndicator("", getResources().getDrawable(R.drawable.qinqing))

.setContent(R.id.third_tab_linearlayout));

//添加监听事件

mTabHost.setOnTabChangedListener(newTabHost.OnTabChangeListener() {

@Override

publicvoidonTabChanged(String tabId) {

if(tabId.equals("One")) {

mMenuTag =1;

}

if(tabId.equals("Two")) {

mMenuTag =2;

}

if(tabId.equals("Three")) {

mMenuTag =3;

}

if(mMenu !=null) {

onCreateOptionsMenu(mMenu);

}

}

});

}

//创建对应的菜单项

@Override

publicbooleanonCreateOptionsMenu(Menu menu) {

mMenu = menu;

mMenu.clear();

//获取菜单过滤器

MenuInflater inflater = getMenuInflater();

switch(mMenuTag) {

case1:

//动态加入数组中对应的menu.xml

inflater.inflate(mMenuResources[0], menu);

break;

case2:

inflater.inflate(mMenuResources[1], menu);

break;

case3:

inflater.inflate(mMenuResources[2], menu);

break;

default:

inflater.inflate(mMenuResources[0], menu);

break;

}

returnsuper.onCreateOptionsMenu(menu);

}

}

程序的运行结果的界面如下:

34ffae43986a365e1bfb45c81c6e0224.png

2012年5月18日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值