设为首页收藏本站
机战Z2破界篇 星组汉化 下载

星组游戏论坛

 找回密码
 注册(QQ注册+邀请注册)

QQ登录

只需一步,快速开始

查看: 827|回复: 0

[心得] TabHost实现方法简介 [复制链接]

Rank: 11Rank: 11Rank: 11Rank: 11

UID
100278
星币
15
积分
2
阅读权限
90
注册时间
2013-9-4
最后登录
2013-9-4
发表于 2013-9-4 14:59:07 |显示全部楼层

一、TabHost 简介

/ P' B- Y2 Q3 n& W, ^( w) y% U

Tabhost选项卡是我们在安卓应用中非常常见的一个控件。他可以实现不用跳转activity来实现不同标签页的显示,每个标签页相当于一个与外部容器大小相同的组件摆放区域,通过这种方式,就可以在一个容器里面放置更多的组件。在我们生活中最常见的就是新浪微博客户端的下面的那个选项卡以及我们手机通讯录的已接电话,未接电话,呼出电话等等。

  F; {! x- O0 i5 _1 R

二:TabHost的几种实现方式

1.继承TabActivity,然后用getTabHost()方法获取TabHost,最后在布局文件中定义各个Tab选项卡添加到TabHost中,通过LayoutInflater.from(this).inflate()取得tab的布局,默认这整个页面的最大框架将是tabhost(所以会出现无法将tabhost里面的页头移到中间或结尾的情况)。但要注意的是在安卓最新版本已经不再推荐使用Tabactivity,而是推荐使用Fragment来代替,在下面的方法中我们会有介绍。

& K0 b7 R+ l" E; Z6 a6 z% D4 d) X

2.不继承tabActibity,通过setup()建立tabhost;通过setcontent()获取页面布局。但是布局文件的格式有规范。必须是tabhost 包含 tabwidget(id必须为tabs);tabhost还包含 framelayout(id必须为 tabcontent),framelayout里面放置你的布局,我的理解是由于帧布局,一个布局遮住另一个布局,所以可以实现切换。

上面两种方法主要的区别就是获取Tabhost以及加载布局文件的不同,下面就将两种方式的重要代码粘贴如下:

继承TabActivity的:

//获取TabHost对象,

TabHost tabHost =this.getTabHost();

//把我们的布局文件添加到tabHost 的FrameLayout下面. E  ~' v" A/ R' s2 [2 ~& `7 X
LayoutInflater.from(this).inflate(R.layout.配置文件, tabHost.getTabContentView(), true);

不继承tabActibity:

//从布局文件中 获取到TabHost
+ ?. A  W! v# s7 k& p2 p. M6 ~TabHost tabHost = (TabHost) this.findViewById(R.id.tabs);% j- D* g& A' }
//安装TabHost2 |3 m( X! v* G2 t4 H: e7 e
tabHost.setup();

需要注意的是这种方式必须定义TabHost ,自定义的TabHost一定得包含TabWidget 和 FrameLayout,并且 TabWidget 的ID一定是@android:id/tabs,FrameLayout 的Id一定是@android:id/tabcontent


2 [! Q: `7 c- c- o9 B

& H% v# N. q8 O. @8 X( z# o

除了上面两种比较常用的方法以我们还可以通过TabHost+Fragment来实现:在这种方式中我们需要对每一个选项卡的内容定义一个Fragment来实现对布局里面的操作,这样比较灵活,有兴趣的可以去网上看一下相关的资源。


/ J# C" M) ]9 v! [1 m, t2 G9 _/ _: B8 i# f. m* Q5 W% z% A8 A
已有 1 人评分星币 收起 理由
绝世爱笑 + 1 这样才算爱过~

总评分: 星币 + 1   查看全部评分

奋斗中--------

Archiver|星组游戏论坛 ( 京公网安备110403080002 )  

GMT+8, 2018-12-18 00:59

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部