- 浏览: 329273 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jnssvh:
楼主,还发代码吗?jnssvh@aliyun.com
SurfaceView简单例子 -
hou_anne:
讲解的非常详细
Android TabActivity实现多页显示效果 -
小鱼小鹰:
现在还能吗。。。296252344@qq.com
自定义控件(SurfaceView与view结合) -
flyar:
你好!我按照你的代码实现多点广播,但是在一台机子休眠,另一台手 ...
UDP广播与多播简单实现 -
herber2010:
图有错误~~
java实现快速排序
TabActivity实现多页显示效果
作者 :Legend
QQ : 158067568
由于手机屏幕有限,所以我们要尽量充分利用屏幕资源。在我们的应用程序中通常有多个Activity,而且会经常切换显示,这样我们就可以用TabActivity来显示。其效果如图1所示。
图1 tabActivity显示效果
本文就来研究TabActivity。根据帮助文档的解释,该控件用于包含并且运行多可内嵌的Activity或者View。首先讲解TabActivity的使用。
TabActivity的使用
如图1所示,远程音乐列表和本地音乐列表为两个不同的按钮,在TabActivity中他是一个TabWidget而下面的两个列表都是在各自的Activity中设置,然后在将每一个Activity添加到TabActivity的FrameLayout中。也就是说在TabActivity的布局文件中必须包含TabWidget和FrameLayout两种控件。
这里值得一提的是,必须为TabActivity的布局文件的根节点设置为:TabHost。可以参考main.xml代码
main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent" android:layout_height="wrap_content" />
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="5dp" />
</LinearLayout>
</TabHost>
这里要说明一下,TabWidget为图一中的按钮控件,FrameLayout为要显示的内容。内容可以是如下两种方式来填充:
q 使用一个Activity中的两个不同的View。
q 使用完全不相关的两个Activity。
在图1中,我使用的是后者,两个完全不同的Activity。下面就来一起编写一个TabActivity的例子。
1.首先创建TabActivityDemo项目。
2.然后依次创建ArtistsActivity, AlbumsActivity, 和 SongsActivity。然后为每一例子添加一个TextView用于区分不同的Activity,如下面代码所示:
public class ArtistsActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textview = new TextView(this);
textview.setText("This is the Artists tab");
setContentView(textview);
}
}
3.我们有了不同的显示内容,就要为每一个按钮设置不同的图标。每一组都需要两张图片用于区分是否是被选中状态。通常的设计原则是使用灰色的图片作为选中图片,白色的作为未选中的图片。可以使用图2中两幅图片。
图2 示例图片
将要使用的图片保存到res/drawable目录中,然后创建一个名为ic_tab_artists.xml的文件在drawable文件夹中。文件代码如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected, use grey -->
<item android:drawable="@drawable/ic_tab_artists_grey"
android:state_selected="true" />
<!-- When not selected, use white-->
<item android:drawable="@drawable/ic_tab_artists_white" />
</selector>
4.修改我们的main.xml文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" />
</LinearLayout>
</TabHost>
TabHost将根据用户的选择,自动的切换FramLayout与TabWidget的显示内容。
5.接下来修改我们的主Activity,让其继承TabActivity。
6.然后使用为我们的主Activity添加OnCreate()方法如下所示:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, ArtistsActivity.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("artists").setIndicator("Artists",
res.getDrawable(R.drawable.ic_tab_artists))
.setContent(intent);
tabHost.addTab(spec);
// Do the same for the other tabs
intent = new Intent().setClass(this, AlbumsActivity.class);
spec = tabHost.newTabSpec("albums").setIndicator("Albums",
res.getDrawable(R.drawable.ic_tab_albums))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, SongsActivity.class);
spec = tabHost.newTabSpec("songs").setIndicator("Songs",
res.getDrawable(R.drawable.ic_tab_songs))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(2);
}
通常我们需要先得到TabHost,可以使用方法getTabHost()得到。
为TabActivity每添加一项内容,都要通过TabHost对象得到一个TabHost.TabSpec对象,该类可以定义每一个tab的内容的属性,比如tabTidget的标题或者显示图标等。通过TabHost的newTabSpec()可以得到该对象。
可以使用setIndicator(CharSequence, Drawable)方法设置图标。使用setContent(Intent)设置内容。最后一定要将使用setContent(Intent)将这个TabHost.TabSpec对象添加到TabHost中。
在最后,可以使用setCurrentTab(int)来设置默认的显示页。
值得一提的是,TabWidget总是TabActivity的孩子结点。用于与用户交互。
7.看看我们的成果吧
- TabActivityDemo.rar (48.8 KB)
- 下载次数: 684
评论
最后一定要将使用setContent(Intent)将这个TabHost.TabSpec对象添加到TabHost中。
这句话里面的setContent(Intent)应该是想说addTab()吧?
发表评论
-
eclipse 快捷键 for macbook (自用备份)
2011-11-06 19:31 1767产看方法被谁调用: cmd + shift + g -
android去除状态栏和下面视图之前的黑线
2011-08-30 11:13 3537<style name=" ... -
sqlite3 常用命令 for android
2011-08-16 10:59 14011)创建数据库文件: ... -
解决Window系统adb shell后中文显示乱码
2011-08-16 10:52 6121Android中使用的是UTF-8字符,而CMD默认字符集 ... -
(转)Eclipse xml formatter setting for android
2011-08-16 10:03 1734Android里使用很多xml 定义layout,我们 ... -
ListView进阶系列之一 内容顺序淡淡显示
2011-03-04 10:06 5961ListView进阶系列之一 内容顺序淡淡显示 listVi ... -
Android Animation 高手必读 之一 Tweened Animations 代码实现
2011-02-27 23:55 9343半小时搞定Android Animation 之一 作者:L ... -
android布局文件中的include
2011-02-27 00:46 8995居然没有发现,在xml文件中可以使用include,我晕 一 ... -
【收集】Android 面试题
2011-02-25 23:42 9873这个是我自己整理的一些面试题,都是在网上找的,非原创。面试前可 ... -
handler异步控制Runnable
2011-02-20 11:03 91971 关于改变Activity中TextView的方法 ... -
Android消息机制入门一
2011-02-19 19:54 2106Android消息机制入门 ... -
自定义控件(SurfaceView与view结合)
2011-02-14 15:59 16187自定义控件(SurfaceView与view结合) 作 ... -
SurfaceView简单例子
2011-02-13 23:53 8365SurfaceView简单例子 作者:Legend ... -
SurfaceView概述
2011-02-13 21:20 16400SurfaceView概述 作者 ... -
Surface概述
2011-02-13 16:18 3281Surface概述 作者:L ... -
Activity之间的相互调用与传递参数
2011-01-05 19:08 12004Activity之间的相互调用与传递参数 作 ... -
SharedPreferenced
2010-12-25 21:49 1992SharedPreferenced ... -
Android中进行单元测试
2010-12-23 13:35 1645Android中进行单元测试 作者:LEGEND ... -
Android 与 MVC
2010-12-23 12:30 3767Android & MVC 作者:LEGEND ... -
android中文件IO
2010-12-23 01:31 3258Android中文件的读写 ...
相关推荐
本篇文章将详细解析如何使用`TabActivity`实现滑动翻页并加入动画效果。 首先,`TabHost`是`TabActivity`的核心组件,它负责管理所有的选项卡和对应的活动。我们需要在布局文件中定义一个`TabHost`,然后在代码中...
在Android开发中,`TabActivity`是早期版本中用于实现标签栏切换的一种方式,它可以创建一个带有多个选项卡的活动,每个选项卡对应一个单独的`Activity`或`Fragment`。然而,`TabActivity`在Android API Level 13...
在早期的Android版本中,TabActivity被广泛使用来实现这一功能,但现在已被废弃,推荐使用Fragment和ViewPager来代替。然而,为了理解这个老式的方法,我们将深入探讨如何使用TabActivity简单实现TabHost显示。 ...
TabHost是Android系统提供的一个用于实现标签页功能的组件,而Fragment则可以看作是可重用的UI组件,它们在现代Android开发中扮演着重要角色。 首先,Fragment是Android SDK中的一种组件,它允许开发者在活动中添加...
总结来说,这个项目可能涉及到创建一个使用TabActivity的多页应用,每个页面包含一个ListView来展示数据。ListView的每一项可能具有圆角边框的视觉效果,而应用还提供了调用手机相机的功能。虽然TabActivity已经过时...
TabActivity曾是Android早期版本中实现标签页切换的主要方式,但随着Android API的发展,TabActivity已被废弃。现在,我们通常使用Fragment和TabHost或者PagerTabStrip等组件来实现类似的功能。本文将详细介绍如何...
在早期的Android版本中,TabActivity用于实现多标签页的应用界面。它是一个特殊的Activity,允许开发者在一个Activity中展示多个Tab,每个Tab可以包含不同的Fragment或Activity。然而,随着Android设计指南的更新,...
在Android开发中,TabActivity是早期版本用于实现标签页切换的一种方式。然而,随着Android SDK的更新,TabActivity已被废弃,现在推荐使用Fragment和ViewPager来实现类似的功能。但为了理解这个旧的用法,我们将...
在Android应用开发中,`TabActivity`曾是实现标签页切换的主要方式,但自API 17之后,它已被弃用。现在,开发者通常使用`Fragment`和`ViewPager`等组件来实现类似的功能,这既符合最新的Android设计指南,也能提供更...
TabActivity实现标签页的功能,通过导航栏对各个页面进行管理。 二.XML布局文件 注意: 1.TabActivity的布局文件要求以TabHost作为XML布局文件的根。 2.通常我们采用线性布局,所以<TabHost> 的子元素是 。 3.对应...
在Android应用开发中,创建自定义的Tab页可以极大地提升用户体验和界面的个性化。本教程将深入探讨如何利用RadioButton实现非源生风格的Tab页,而不是依赖于原生的TabHost或ViewPager。以下是对这个主题的详细讲解:...
然而,随着Android SDK的发展,TabActivity已经被弃用,取而代之的是使用 Fragments 和 ViewPager 来实现更现代、更灵活的多页视图。下面我们将深入探讨如何使用Fragment和ViewPager来实现类似TabActivity的功能,...
在Android开发中,`TabActivity`是早期版本中用于实现标签栏切换页面的一种方式。它允许用户通过点击不同的标签在多个视图之间进行切换,提供了一种直观且友好的用户界面。然而,随着Android SDK的发展,`...
然而,在旧版应用中,`TabActivity`仍然是一个重要的概念,因为它提供了一种简单的方式来组织多个`Activity`或`View`并实现它们之间的切换。 `AndroidManifest.xml`文件是每个Android应用的核心配置文件,它包含了...
在Android开发中,TabActivity是早期用来实现底部标签栏切换页面的一种方式,它结合了TabHost和ActivityGroup来实现多页面间的切换。然而,随着Android版本的更新,TabActivity已经逐渐被Fragment和ViewPager等组件...
在Android开发中,`TabActivity`是早期API版本中用于实现多标签页切换的一种方式。本文将深入探讨`TabActivity`的使用,以及如何通过源码理解和应用它,同时也会介绍一些相关的工具来辅助开发。 `TabHost`是`...
在Android应用开发中,`TabActivity`是一种常见的用于创建多标签界面的设计模式。它允许用户在不同的标签之间切换,每个标签通常对应一个独立的功能模块。然而,随着Android SDK的更新,`TabActivity`已被废弃,...
`TabActivity`是Android 2.x版本中的一部分,它基于`ActivityGroup`,允许在一个`Activity`中嵌套多个子`Activity`,每个子`Activity`对应一个标签页。这种方式现在看来并不推荐,因为它带来了复杂的生命周期管理...
在Android开发中,`TabActivity`是一个非常经典的组件,它被用于实现底部导航栏或者顶部选项卡的效果。在早期的Android版本中,`TabActivity`是官方推荐的实现多标签切换的方式,但在后来的API更新中,它逐渐被更...