Android中选项卡功能的实现

Android中选项卡功能的实现

Android中使用TabHostTabWidget来实现选项卡功能。TabHost必须是布局的根节点,它包含两个子节点:

TabWidget,显示选项卡;

FrameLayout,显示标签内容。

实现选项卡功能有两种方法,一种是将多个View放在同一个Activity中,然后使用使用标签来进行切换。另一种是直接使用标签切换不同的Activity。

后一种方法更为常用一些。本文也只介绍了后一种方法的实现过程。

1. 创建一个工程,名字可以叫HelloTabWidget。

2. 创建多个不同的Activity,用来表示各个标签页中的不同内容。

3. 为标签设计不同的icon。每个标签应该有两个icon,一个表示选中,一个未选中。将图片放在 res/drawable/文件夹下。然后创建一个相应的

StateListDrawable,用来实现在选中和未选中直接自动的切换。

[java] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  3. <!-- When selected, use grey -->
  4. <item android:drawable="@drawable/ic_tab_artists_grey"
  5. android:state_selected="true" />
  6. <!-- When not selected, use white-->
  7. <item android:drawable="@drawable/ic_tab_artists_white" />
  8. </selector>

4. 将main.xml替换为以下内容。

[java] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@android:id/tabhost"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <LinearLayout
  7. android:orientation="vertical"
  8. android:layout_width="fill_parent"
  9. android:layout_height="fill_parent"
  10. android:padding="5dp">
  11. <TabWidget
  12. android:id="@android:id/tabs"
  13. android:layout_width="fill_parent"
  14. android:layout_height="wrap_content" />
  15. <FrameLayout
  16. android:id="@android:id/tabcontent"
  17. android:layout_width="fill_parent"
  18. android:layout_height="fill_parent"
  19. android:padding="5dp" />
  20. </LinearLayout>
  21. </TabHost>

5. 让你的主Activity继承自TabActivity

6. 在主Activity的onCreate方法中加入标签

[java] view plaincopy

  1. public void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. setContentView(R.layout.main);
  4. Resources res = getResources(); // Resource object to get Drawables
  5. TabHost tabHost = getTabHost();  // The activity TabHost
  6. TabHost.TabSpec spec;  // Resusable TabSpec for each tab
  7. Intent intent;  // Reusable Intent for each tab
  8. // Create an Intent to launch an Activity for the tab (to be reused)
  9. intent = new Intent().setClass(this, ArtistsActivity.class);
  10. // Initialize a TabSpec for each tab and add it to the TabHost
  11. spec = tabHost.newTabSpec("artists").setIndicator("Artists",
  12. res.getDrawable(R.drawable.ic_tab_artists))
  13. .setContent(intent);
  14. tabHost.addTab(spec);
  15. // Do the same for the other tabs
  16. intent = new Intent().setClass(this, AlbumsActivity.class);
  17. spec = tabHost.newTabSpec("albums").setIndicator("Albums",
  18. res.getDrawable(R.drawable.ic_tab_albums))
  19. .setContent(intent);
  20. tabHost.addTab(spec);
  21. intent = new Intent().setClass(this, SongsActivity.class);
  22. spec = tabHost.newTabSpec("songs").setIndicator("Songs",
  23. res.getDrawable(R.drawable.ic_tab_songs))
  24. .setContent(intent);
  25. tabHost.addTab(spec);
  26. tabHost.setCurrentTab(2);
  27. }

7. 运行程序即可看到效果。

总结:

main.xml中定义的选项卡的样式,它和TabActivity共同配合,创建了选项卡的框架。TabHost.TabSpec 代表了一个选项卡的内容,TabHost使用addTab方法将其加入到整个选项卡中。

TabHost.TabSpec

原文: http://blog.csdn.net/cool_android/article/details/7202381

时间: 2024-10-31 12:31:03

Android中选项卡功能的实现的相关文章

Android中常见功能包描述

在Android中,各种包写成android.*的方式,重要包的描述如下所示:android.app :提供高层的程序模型.提供基本的运行环境android.content:包含各种的对设备上的数据进行访问和发布的类android.database :通过内容提供者浏览和操作数据库android.graphics:底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.android.location :定位和相关服务的类android.media :提供一些类管理多种音频.视频

Android中常见功能包描述(转)

在Android中,各种包写成android.*的方式,重要包的描述如下所示:android.app :提供高层的程序模型.提供基本的运行环境android.content:包含各种的对设备上的数据进行访问和发布的类android.database :通过内容提供者浏览和操作数据库android.graphics:底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.android.location :定位和相关服务的类android.media :提供一些类管理多种音频.视频

Android中自定义ListView实现上拉加载更多和下拉刷新

ListView是Android中一个功能强大而且很常用的控件,在很多App中都有ListView的下拉刷新数据和上拉加载更多这个功能.这里我就简单记录一下实现过程. 实现这个功能的方法不止一个,GitHub上有一些开源库可以使用,但是本着学习的精神,我做的是使用自定义ListView实现这个功能. 思路:谷歌提供的ListView是不能提供下拉刷新和下拉加载的,所以我们就需要重写ListView.在ListView的头部和尾部加上我们的布局文件(progressbar). 先说上拉加载更多实现

Android下WiFiDisplay功能探究

1 WiFiDisplay简介 1.1WiFiDisplay概述 WiFiDisplay(WFD)是WiFi联盟在已有技术的基础上,为了加速视/音频的传输分享而提出来的一个新概念.WiFi联盟对此成立了一个认证项目:Miracast-- 用来认证一个设备是否支持WiFiDisplay功能. 下图是WiFiDisplay功能的技术支撑体系,实际上最重要的部分就是WiFi Direct:也就是两个设备无需AP(AccessPoint)的情况下直接相连,这就奠定了两个带WiFi功能的设备能够随时传递高

Android 支持表情功能

概述 1.原理和实现思路 2.表情图片显示 3.表情面板 4.表情的输入框插入和删除 5.表情添加脚本 Android中表情功能,一般都不是用ImageView去设置图片实现的, 表情一般会嵌套在文本之中,那么如何实现呢,这里就介绍一下其中的原理,此外还有相关功能的实现思路和具体代码 1.原理和思路 a.表情内容的数据格式 表情看上去是图片,但是在数据传输的时候本质上是一个特殊文本 比如QQ表情就是一个 "/表情字母"的结构,比如害羞的表情就是/hx,呲牙就是/cy- 微博里表情就是&

android中调用系统的发送短信、发送邮件、打电话功能

1 调用发送短信功能: Uri smsToUri = Uri.parse("smsto:"); Intent sendIntent = new Intent(Intent.ACTION_VIEW, smsToUri); sendIntent.putExtra("address", "123456"); //电话号码,这行去掉的话,默认就没有电话 sendIntent.putExtra("sms_body","短信内容

Android中Xposed框架篇---修改系统位置信息实现自身隐藏功能

一.前言 前文已经介绍了Xposed框架的基本使用规则,本文主要来介绍一个实际案例就是如何通过这个框架来修改系统的地理位置信息来实现隐藏功能,在如今社交工具的发展特别是微信,他有一个实时位置共享功能,那么对于那些不是单身狗的同学来说可能会有些蛋疼,哪天媳妇要查岗发送位置,结果你不在她期望的位置这时候就尴尬了,而且朋友圈在分享内容的时候可以选择当前位置,有的屌丝就像我一样没钱但是又想到处旅游,那么这时候咋们就可以一本正经的装个逼了. 二.定位原理 看到上面说的那么多,感觉这个功能必须要搞起来了,好

Android中使用GridView和ImageViewSwitcher实现电子相册简单功能

我们在手机上查看相册时,首先看到的是网格状的图片展示界面,然后我们选择想要欣赏的照片点击进入,这样就可以全屏观看该照片,并且可以通过左右滑动来切换照片.如下图的显示效果: 首先我们先罗列一下本次实现所要用的知识点: (1)首页界面,我们需要可以通过GridView来实现,有关GridView的实现代码以及讲解请参照本人相关博文: Android中GridView通过自定义适配器(未优化)实现图文视图排列 (2)具体照片的展示以及左右切换效果,可以实现这个效果的方法很多(ViewPager,Vie

Android中静态方式破解某App实现所有视频app去除广告功能

作为一个屌丝程序猿也有追剧的时候,但是当打开视频app的时候,那些超长的广告已经让我这个屌丝无法忍受了,作为一个程序猿看视频还要出现广告那就是打我脸,但是我有没有钱买会员,只能靠着毕生技能去耍耍去除广告了.下面就来介绍一下如何进行视频广告的去除. 一.视频广告播放原理 首先我们需要了解的一个基本知识点那就是广告其实也是一段视频,那么他肯定有请求地址和播放地址.那么我们的思路就来了,如果能够得到这些地址的话,我们就可以去除广告了,为什么呢?因为我们知道所有的网络请求最终会走系统的hosts文件,在