- 浏览: 433624 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yehuiyan8002:
支持中文查询
快熟查找联系人 -
lehehe:
现成的接口,免费试用,http://www.haoservic ...
天气Widget -
D.Z:
android:focusable="false&q ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
freecode:
碰到该问题,CheckBox的android:focusabl ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
echohfut:
哥们,新博客是不是在墙外啊?不能访问。还有你怎么进行博客迁移的 ...
博客 迁移
TabActivity 分页
[功能]
TabActivity 即 该Activity 包括 若干个标签 每个标签里面包含一个Layout 就如同普通意义上的Activity 一样
[原理]
1. 每个标签的生成 都是借助于 TabHost
2. 每个标签里面都可以当做一个Activity 里面可以包含若干个View 比如 TextView ImageView 等等
3. 若干个标签是以 String 参数来区分的
[代码]
1. 得到TabHost实例
(其仅在TabActivity里面有效)
2. 创建一个标签
3. 标签里面如何布局
(且 item 必须 implements TabHost.TabContentFactory)
4. 自定义标签的布局
[所有代码]
[功能]
TabActivity 即 该Activity 包括 若干个标签 每个标签里面包含一个Layout 就如同普通意义上的Activity 一样
[原理]
1. 每个标签的生成 都是借助于 TabHost
2. 每个标签里面都可以当做一个Activity 里面可以包含若干个View 比如 TextView ImageView 等等
3. 若干个标签是以 String 参数来区分的
[代码]
1. 得到TabHost实例
TabHost host = this.getTabHost();
(其仅在TabActivity里面有效)
2. 创建一个标签
public final static String TAB1 = "tab1"; host.addTab(host.newTabSpec(TAB1) .setIndicator("", getResources().getDrawable(R.drawable.beijing_001_mb5ucom)) .setContent(item));
3. 标签里面如何布局
host.setContent(item));
(且 item 必须 implements TabHost.TabContentFactory)
4. 自定义标签的布局
public class CustomTabs implements TabHost.TabContentFactory { Activity activity; LayoutInflater inflater; LinearLayout layout; public CustomTabs (Activity a) { activity = a; inflater = activity.getLayoutInflater(); } /** {@inheritDoc} */ public View createTabContent(String tag) { activity.setTitle(tag); return addCustomView(tag); } public View addCustomView(String id){ layout = new LinearLayout(activity); layout.setOrientation(LinearLayout.VERTICAL); if(id.equals(TAB1)){ ImageView iv = new ImageView(activity); iv.setImageResource(R.drawable.o); layout.addView(iv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT)); } else if(id.equals(TAB2)){ EditText edit = new EditText(activity); layout.addView(edit, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); Button btn = new Button(activity); btn.setText("OK"); layout.addView(btn, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); RadioGroup group = new RadioGroup(activity); group.setOrientation(LinearLayout.HORIZONTAL); RadioButton radio1 = new RadioButton(activity); radio1.setText("Radio 1"); group.addView(radio1); RadioButton radio2 = new RadioButton(activity); radio2.setText("Radio 2"); group.addView(radio2); layout.addView(group, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); } else if(id.equals(TAB3)){ LinearLayout.LayoutParams param3 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); layout.addView(inflater.inflate(R.layout.item_3, null),param3); } else if(id.equals(TAB4)){ LinearLayout.LayoutParams param4 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); layout.addView(inflater.inflate(R.layout.item_4, null),param4); } else { TextView tv5 = new TextView(activity); tv5.setText("no resource aviable!"); tv5.setGravity(1); layout.addView(tv5, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT)); } return layout; } }
[所有代码]
public class CustomTabsUsage extends TabActivity { public final static String TAB1 = "tab1"; public final static String TAB2 = "tab2"; public final static String TAB3 = "tab3"; public final static String TAB4 = "tab4"; public final static String TAB5 = "tab5"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CustomTabs item = new CustomTabs(this); TabHost host = this.getTabHost(); host.addTab(host.newTabSpec(TAB1) .setIndicator("", getResources().getDrawable(R.drawable.beijing_001_mb5ucom)) .setContent(item)); host.addTab(host.newTabSpec(TAB2) .setIndicator("",getResources().getDrawable(R.drawable.beijing_002_mb5ucom)) .setContent(item)); host.addTab(host.newTabSpec(TAB3) .setIndicator("",getResources().getDrawable(R.drawable.beijing_003_mb5ucom)) //.setIndicator("Tab3") .setContent(item)); host.addTab(host.newTabSpec(TAB4) .setIndicator("",getResources().getDrawable(R.drawable.beijing_004_mb5ucom)) .setContent(item)); host.addTab(host.newTabSpec(TAB5) .setIndicator("",getResources().getDrawable(R.drawable.beijing_005_mb5ucom)) .setContent(item)); host.setOnTabChangedListener(new OnTabChangeListener(){ @Override public void onTabChanged(String tabId) { // TODO Auto-generated method stub } }); } public class CustomTabs implements TabHost.TabContentFactory { Activity activity; LayoutInflater inflater; LinearLayout layout; public CustomTabs (Activity a) { activity = a; inflater = activity.getLayoutInflater(); } /** {@inheritDoc} */ public View createTabContent(String tag) { activity.setTitle(tag); return addCustomView(tag); } public View addCustomView(String id){ layout = new LinearLayout(activity); layout.setOrientation(LinearLayout.VERTICAL); if(id.equals(TAB1)){ ImageView iv = new ImageView(activity); iv.setImageResource(R.drawable.o); layout.addView(iv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT)); } else if(id.equals(TAB2)){ EditText edit = new EditText(activity); layout.addView(edit, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); Button btn = new Button(activity); btn.setText("OK"); layout.addView(btn, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); RadioGroup group = new RadioGroup(activity); group.setOrientation(LinearLayout.HORIZONTAL); RadioButton radio1 = new RadioButton(activity); radio1.setText("Radio 1"); group.addView(radio1); RadioButton radio2 = new RadioButton(activity); radio2.setText("Radio 2"); group.addView(radio2); layout.addView(group, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); } else if(id.equals(TAB3)){ LinearLayout.LayoutParams param3 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); layout.addView(inflater.inflate(R.layout.item_3, null),param3); } else if(id.equals(TAB4)){ LinearLayout.LayoutParams param4 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); layout.addView(inflater.inflate(R.layout.item_4, null),param4); } else { TextView tv5 = new TextView(activity); tv5.setText("no resource aviable!"); tv5.setGravity(1); layout.addView(tv5, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT)); } return layout; } } }
- CustomTabsUsage.rar (376.1 KB)
- 下载次数: 172
发表评论
-
滑动抽屉 另一种解决办法
2010-07-09 17:43 0滑动抽屉 -
Spinner 定制化 增强版
2010-07-09 14:34 2609Spinner 作为下拉选 ... -
ListView 内容之分批显示
2010-06-25 20:38 5925ListView 内容循环显示 大家试想 假如 ... -
MediaScanner 研究
2010-06-23 15:21 3170MediaScanner 之所以拿MediaSc ... -
CheckBox在ListView 而导致其OnItemClickListener不会被触发
2010-06-22 20:55 19015CheckBox在ListView 而导致其OnItemCli ... -
获取Launcher 启动列表
2010-06-22 10:09 3138获取Launcher 启动列表 即 列出所有Launc ... -
PreferenceActivity 全接触
2010-06-19 12:53 9440PreferenceActivity 为了引入 ... -
android src 下载 编译 安装 全接触
2010-06-12 14:44 0android src - download install ... -
Intent.createChooser() 妙用
2010-06-12 11:14 5955Intent.createChooser(ntent targ ... -
SMS管理:收信箱 发信息 编写新信息
2010-06-07 08:14 14445SMS管理 [功能] 1. 收信箱:显示 ... -
求 android 手机 帮忙测试sms服务系统 谢谢
2010-06-05 08:25 1452Hi guys, 最近一段时间没有更新blog 因为一 ... -
流媒体 播放 理论篇
2010-05-28 14:42 2224流媒体播放 之所以为理论篇 因为该篇仅实现了播放功能 ... -
NDK 搭建与HelloWorld
2010-05-19 09:48 3225NDK [前提] 1. Cygwin 用于安装 ... -
自定义字体
2010-05-15 10:49 1221自定义字体: []代码 步骤] 1 ... -
模糊查找 再深入
2010-05-15 09:41 3158模糊查找 再深入 应某位大哥要求 再次对 SQLite ... -
快捷方式Bar + ViewGroup - 自定义
2010-05-09 09:20 2470TabActivity - 自定义 其实 这篇感觉极鸡 ... -
View 拖动&插入 研究
2010-05-09 07:14 3985View 拖动&插入 即: ... -
带图标 快捷键 Menu - 终极版
2010-05-04 20:23 1837Menu 改头换面 扩展如下: 1. 图标化文字 2 ... -
*.gif 解码 - 实践
2010-05-02 18:58 1737*.gif decode 前面已经说过 今天不打算再说了 ... -
*.gif 解码 - 理论
2010-05-01 21:11 1522我们知道Android 默认是不支持*.gif 的 但是 ...
相关推荐
Android TabActivity 开发案例,本案例着重介绍用TabActivity 开发安卓分页架构
在Android应用开发中,"基于GridView和ActivityGroup实现的TAB分页"是一个常见的设计模式,用于构建...随着Android SDK的发展,开发者现在更多地使用Fragment和ViewPager来实现更灵活、更高效和更现代的Tab分页体验。
同时,考虑使用Paging库实现分页加载,减少一次性加载大量数据对内存的影响。 7. **测试与调试** 完成基本功能后,进行单元测试和集成测试,确保各个部分正常工作。利用Android Studio的Profiler工具进行性能分析,...
android4平台使用FragmentActivity来代替已经被弃用的TabActivity来实现分页的功能,而且前者是在屏幕的底部来实现的。我代码中的图片是借鉴之前参考的一份代码中的图片,我参考的代码链接是:...
`TabActivity` 文件很可能是这个示例中的主活动,它将把这些组件和逻辑组合在一起,提供一个完整的分页Tab界面。通过理解这些核心概念和组件,开发者可以创建出功能丰富且用户友好的Android应用。
以前如果要做 Tab 分页的话,必须要用一个很难用的 TabActivity,而且做出来的效果很差,弹性也很小 忘了从什么时候开始,Google release 了 ViewPager 这好东西取代了以前难用的 Gallery 元件,加上从 Honeycomb ...
如果涉及到更复杂的分页,可能会使用`ViewPager` 和`FragmentPagerAdapter` 来替代`ViewFlipper`,以支持更灵活的页面切换和更好的性能。 总的来说,这个项目涵盖了Android UI设计中的几个关键组件和概念:TabHost...
读者也许会马上想到使用TabHost 与 TabActivity的组合,其实最常用的不是它们,而是由GridView与ActivityGroup的组合。每当用户在GridView选中一项,ActivityGroup就把该项对应的Activity的Window作为View添加到...
在Android开发中,TabActivity是一种常见的界面布局方式,它能够帮助我们构建分页浏览的应用,通常包含多个可切换的标签,每个标签对应一个单独的Activity或者Fragment。本文将深入探讨TabActivity的工作原理、实现...
多个activity分页管理,为了方便获取上下文,采用继承TabActivity的传统方法。 大致思路:使用RadioGroup点击触发不同的选卡项,选卡项绑定不同的activiity,进而进行分页管理。详解见注解。 /** * 主Activity * ...
读者也许会马上想到使用TabHost 与 TabActivity的组合,其实最常用的不是它们,而是由GridView与ActivityGroup的组合。每当用户在GridView选中一项,ActivityGroup就把该项对应的Activity的Window作为View添加到...
分页大家都会用Android的TabHost和TabActivity的组合,今天我这里实现的是GridView和ActivityGroup实现的分页,这里需要将Activity转换成Window,然后再换成成View添加到容器中,效果如下 1.布局文件底部放一个...
/** 记录当前分页ID */ private int currentTabID = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ...
在这个项目中,`TabActivity` 很可能是主活动,负责管理各个Tab页面。`Tab` 的实现通常有两种常见方式:使用`TabHost`(已过时)和使用`ViewPager` 结合`TabLayout`。考虑到现代Android开发的实践,我们更倾向于后者...
在Android开发中,TabHost是一个非常重要的组件,用于在同一个界面上实现多个选项卡的切换效果,从而提供分页浏览的用户体验。本文将详细介绍如何利用TabHost组件在Android应用中创建并管理多个选项卡。 首先,我们...