本文实例讲述了android开发之tabactivity用法。分享给大家供大家参考,具体如下:
一.简介
tabactivity继承自activity,目的是让同一界面容纳更多的内容。tabactivity实现标签页的功能,通过导航栏对各个页面进行管理。
二.xml布局文件
注意:
1.tabactivity的布局文件要求以tabhost作为xml布局文件的根。
2.通常我们采用线性布局,所以<tabhost> 的子元素是 <linearlayout>。
3.<tabwidget>对应tab
<framelayout>则用于包含tab需要展示的内容
需要注意的是<tabwidget> 和<framelayout>的id 必须使用系统id,分别为android:id/tabs 和 android:id/tabcontent 。
因为系统会使用者两个id来初始化tabhost的两个实例变量(mtabwidget 和 mtabcontent)。
4.代码示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version= "1.0" encoding= "utf-8" ?> <tabhost android:id= "@android:id/tabhost" xmlns:android= "http://schemas.android.com/apk/res/android" android:layout_width= "match_parent" android:layout_height= "match_parent" > <linearlayout android:orientation= "vertical" android:layout_width= "match_parent" android:layout_height= "match_parent" > <tabwidget android:id= "@android:id/tabs" android:layout_width= "match_parent" android:layout_height= "wrap_content" > </tabwidget> <framelayout android:id= "@android:id/tabcontent" android:layout_width= "match_parent" android:layout_height= "match_parent" > </framelayout> </linearlayout> </tabhost> |
三.tabactivity
1.tabhost:tabhost是tab的载体,用来管理tab。
2.tabhost的一些函数
(1)获取
1
|
tabhost tabhost= this .gettabhost(); |
(2) 创建tabhost.tabspec
1
|
public tabhost.tabspec newtabspec (string tag) |
(3)添加tab
1
|
public void addtab (tabhost.tabspec tabspec) |
(4)remove所有的tabs
1
2
|
public void clearalltabs () public int getcurrenttab () |
(5) 设置当前的tab (by index)
1
|
public void setcurrenttab ( int index) |
(6) 设置当前的(tab by tag)
1
|
public void setcurrenttabbytag (string tag) |
(7)设置tabchanged事件的响应处理
1
|
public void setontabchangedlistener (tabhost.ontabchangelistener l) |
3.tabhost.tabspec要设置tab的label和content,需要设置tabhost.tabspec类。tabhost.tabspec管理:
1
2
3
|
public string gettag () public tabhost.tabspec setcontent public tabhost.tabspec setindicator |
(1)indicator这里的indicator 就是tab上的label,它可以
设置label :
1
|
setindicator (charsequence label) |
设置label和icon :
1
|
setindicator (charsequence label, drawable icon) |
指定某个view :
1
|
setindicator (view view) |
(2)content对于content ,就是tab里面的内容,可以
设置view的id :
1
|
setcontent( int viewid) |
用new intent 来引入其他activity的内容:setcontent(intent intent)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package com.zhanglong.music; import android.app.tabactivity; import android.content.intent; import android.content.res.resources; import android.os.bundle; import android.view.window; import android.view.windowmanager; import android.widget.tabhost; public class mainactivity extends tabactivity { /** called when the activity is first created. */ @override public void oncreate(bundle savedinstancestate) { super .oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); this .getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen); setcontentview(r.layout.main); resources res = getresources(); tabhost tabhost = gettabhost(); tabhost.tabspec spec; intent intent; intent = new intent().setclass( this , listactivity. class ); spec = tabhost.newtabspec( "音乐" ).setindicator( "音乐" , res.getdrawable(r.drawable.item)) .setcontent(intent); tabhost.addtab(spec); intent = new intent().setclass( this , artistsactivity. class ); spec = tabhost.newtabspec( "艺术家" ).setindicator( "艺术家" , res.getdrawable(r.drawable.artist)) .setcontent(intent); tabhost.addtab(spec); intent = new intent().setclass( this , albumsactivity. class ); spec = tabhost.newtabspec( "专辑" ).setindicator( "专辑" , res.getdrawable(r.drawable.album)) .setcontent(intent); tabhost.addtab(spec); intent = new intent().setclass( this , songsactivity. class ); spec = tabhost.newtabspec( "最近播放" ).setindicator( "最近播放" , res.getdrawable(r.drawable.album)) .setcontent(intent); tabhost.addtab(spec); tabhost.setcurrenttab( 0 ); } } |
希望本文所述对大家android程序设计有所帮助。