博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android TabHost的使用
阅读量:5363 次
发布时间:2019-06-15

本文共 4179 字,大约阅读时间需要 13 分钟。

标签显示界面的主要特点是可以在一个窗口中显示多组标签栏的类容。

在Android系统中,每个标签栏称为一个Tab,而包含多个标签栏的内容就称为TabHost。

通过TabHost的继承结构来看,TabHost类是FrameLayout的子类。

实现标签显示界面有两种方式可供选择。

  1. 直接让一个Activity继承TabActivity类。
  2. 利用findViewById()方法取得TabHost组件,并进行一些配置。

下面我们用两个简单例子来体验一下:

第一种继承TabActivity类:(注意:TabActivity类已被官方提出抛弃)

首先就是布局文件tab.xml:

1 
2
7
13
19
24
25
31
35
36
42
47
51
54 55
56
View Code

其次就是默认的MainActivity的实现:

1 public class MyTabHostDemo extends TabActivity { // 继承了TabActivity 2     private TabHost myTabHost; 3     private int[] layRes = new int[] { R.id.tab_edit, R.id.tab_clock, 4             R.id.tab_sex }; // 这些是内嵌布局文件的ID 5  6     @Override 7     public void onCreate(Bundle savedInstanceState) { 8         super.onCreate(savedInstanceState); 9         this.myTabHost = super.getTabHost(); // 取得TabHost对象10         LayoutInflater.from(this).inflate(R.layout.tab,11                 this.myTabHost.getTabContentView(), true); // true表示实例化布局文件中的组件12         for (int x = 0; x < this.layRes.length; x++) {13             TabSpec myTab = this.myTabHost.newTabSpec("tab" + x) ;14             myTab.setIndicator("标签  - " + x) ;15             myTab.setContent(this.layRes[x]) ;16             this.myTabHost.addTab(myTab) ;17         }18     }19 }
View Code

到此,一个简单的TabHost的使用就完成了。

第二种方式的实现:

首先,我们还是是布局文件的实现。

tab.xml:

1 
2
8 9
13 14
17 18
23 24
28 29
33 34
39 40 41 42
46 47
52 53 54 55
59 60
65 66 67 68 69 70 71
View Code

main.xml:(这个不是默认.JAVA文件加载的布局文件,只是为了方便没有新建布局文件。)

1 
2
6
11 12
View Code

实现默认的MainActivity:

1 public class MainActivity extends ActivityGroup {
//ActivityGroup类也已被建议遗弃 2 private TabHost tabHost; 3 Intent oneIntent; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.tab); 9 oneIntent = new Intent();10 oneIntent.setClass(this, testActivity.class);11 tabHost = (TabHost) this.findViewById(R.id.TabHost01);//获得对象12 tabHost.setup();//建立对象(与上一行代码必须同时存在)13 tabHost.setup(this.getLocalActivityManager());//要实现Intent跳转,必须要这句话。14 try {15 16 tabHost.addTab(tabHost17 .newTabSpec("tab_1")18 .setContent(R.id.LinearLayout1)19 .setIndicator("TAB1",20 this.getResources().getDrawable(R.drawable.img1)));21 tabHost.addTab(tabHost22 .newTabSpec("tab_2")23 .setContent(R.id.LinearLayout2)24 .setIndicator("TAB2",25 this.getResources().getDrawable(R.drawable.img2)));26 tabHost.addTab(tabHost.newTabSpec("tab_3")27 .setContent(R.id.LinearLayout3).setIndicator("TAB3"));28 tabHost.addTab(tabHost29 .newTabSpec("tab_4")30 .setIndicator("TAB4",31 this.getResources().getDrawable(R.drawable.img3))32 .setContent(oneIntent));33 tabHost.setCurrentTab(1); // 设置默认的页面34 } catch (Exception ex) {35 ex.printStackTrace();36 Log.d("EXCEPTION", ex.getMessage());37 }38 }39 40 }
View Code

新建一个用于Intent跳转的Activity:

1 public class testActivity extends Activity { 2  3     @Override 4     protected void onCreate(Bundle savedInstanceState) { 5         // TODO Auto-generated method stub 6         super.onCreate(savedInstanceState); 7         setContentView(R.layout.main); 8         TextView tv=(TextView) findViewById(R.id.TV); 9         tv.setText("已经跳转了");10     }11 12 }
View Code

接下来运行即可。

这样,用两个例子分别实现了两种不同的实现方式。

转载于:https://www.cnblogs.com/scetopcsa/p/3680690.html

你可能感兴趣的文章
ListView的简单使用--Android
查看>>
bzoj1452: [JSOI2009]Count
查看>>
bzoj5029: 贴小广告&&bzoj5168: [HAOI2014]贴海报
查看>>
关于国际化
查看>>
字符串函数之strncmp
查看>>
移动端base.css
查看>>
Java入门系列-11-类和对象
查看>>
URL和URI
查看>>
结对开发
查看>>
关于An association from the table refers to an unmapped class
查看>>
sql server 2005建立数据库,表,约束,账户密码,权限,基本查询删除语句
查看>>
discuz二次开发笔记(一)------$_G全解析
查看>>
shell环境变量以及set,env,export的区别
查看>>
Apache报错You don't have permission to access on this server
查看>>
关于php的socket
查看>>
脚本控制
查看>>
每日关键词-170226
查看>>
如何提升Node执行效率
查看>>
Python学习笔记之常用函数及说明
查看>>
数据科学家:站在大数据金字塔尖的人
查看>>