77范文网 - 专业文章范例文档资料分享平台

Android TabHost用法(8)

来源:网络收集 时间:2019-01-07 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

setContentView(textView); } }

ArtistActivity.java MusicActivity.java SportActivity.java三个activity是用做标签内容的activity。即当用户点击相应的标签时,下边会显示相应的activity内容。

ic_tab.xml代码

[xhtml] view plaincopy

xmlns:android=\ >

>

这里一定要注意ic_tab.xml文件的位置,是放在res/drawable文件夹下的。有些朋友说怎么没有这个文件夹啊,实际上大家看到了我将它放在了drawable-hdpi中了,实际上drawable-hdpi、drawable-ldpi、drawable-mdpi三个文件夹都属于drawable文件夹的哦。该文件它规定了,当标签获得焦点和失去焦点时,标签上显示什么图片。 例如本例中,就是当state_selected=\(当标签被选中时),显示@drawable/grey指定的资源图片。当未被选中时,显示@drawable/black指定的资源图片。 tagView.java代码: [java] view plaincopy package cn.com.tagview;

import android.app.TabActivity; import android.content.Intent;

import android.content.res.Resources; import android.os.Bundle;

import android.widget.TabHost; /**

* @author chenzheng_Java

* @description 注意,该类一定要继承TabActivity */

public class TagView extends TabActivity { @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.main);

// android代码中访问application资源的一个类 Resources resources = getResources();

// 获取当前activity的标签,该方法的实现中已经执行了setContentView(com.android.internal.R.layout.tab_content); TabHost tabHost = getTabHost(); // 每一个标签项

TabHost.TabSpec spec;

// 声明一个意图,该意图告诉我们,下一个跳转到的activity是ArtistActivity。 Intent intent = new Intent(this, ArtistActivity.class); /**

* tabHost.newTabSpec(\创建一个标签项,其中artist为它的标签标识符,相当于jsp页面标签的name属性

* setIndicator(\艺术标签\设置标签显示文本以及标签上的图标(该图标并不是一个图片,而是一个xml文件哦) * setContent(intent)为当前标签指定一个意图 * tabHost.addTab(spec); 将标签项添加到标签中 */

spec = tabHost.newTabSpec(\艺术标签\

resources.getDrawable(R.drawable.ic_tab)).setContent(intent); tabHost.addTab(spec);

Intent intent2 = new Intent(this, MusicActivity.class);

spec = tabHost.newTabSpec(\音乐标签\

resources.getDrawable(R.drawable.ic_tab)).setContent(intent2); tabHost.addTab(spec);

Intent intent3 = new Intent(this, SportActivity.class);

spec = tabHost.newTabSpec(\体育标签\

resources.getDrawable(R.drawable.ic_tab)).setContent(intent3); tabHost.addTab(spec);

// tabHost.setCurrentTabByTag(\设置第一次打开时默认显示的标签,该参数与tabHost.newTabSpec(\的参数相同

tabHost.setCurrentTab(1);//设置第一次打开时默认显示的标签,参数代表其添加到标签中的顺序,位置是从0开始的哦。 } }

AndroidManifest.xml

[xhtml] view plaincopy

一切都弄好之后,运行,就出现了最终效果。这里要注意,main.xml是一直都没有用到的哦。

废话连篇: 其实,利用TabHost布局与ListView有很多相似之处,系统也同样为他们提供了帮助类,TabHost-TabActivity ListView-ListActivity .当我们的activity集成了这些类之后,一般在里面我们只需要整理绑定下数据就可以。

再次声明一下,代码中是存在setContentView方法的调用的,只不过因为我们集成了TabActivity,TabActivity的getTabHost方法中已经进行了实现而已。对用户隐藏了,并不代表没有。

项目中为了简单易懂,我们只是在每个标签的内容部分添加了一个文本。实际上,我们完全可以在里面添加图片、视频等等。只要在相应的activity中实现就行了。我们可以看到,这种方式其实有很好的分层结构,activity与activity之间没有太多耦合。

可能一直到现在,有些朋友对TabActivity和ListActivity这种实现都特别的别扭。我这里就简单的说一下,实际上这其实是一种设计模式,模板模式。系统给你提供了一个实现了大部分内容的模板,然后你通过继承模板,去做修改(例如模板中有一个方法没有任何实现,你重写该方法并对其进行具体实现),让其符合你的要求。这就是模板模式的原理。

三、继承TabActivity并以布局文件进行布局

上面的是最终效果图。 代码结构如下。

main.xml代码:

[xhtml] view plaincopy

android:layout_width=\ android:orientation=\

Android TabHost用法(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/411683.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: