- 浏览: 23041 次
文章分类
最新评论
总结开发使用tabHost+Fragment的使用步骤:
1、在Activity的布局文件中使用TabHost
2、初始化TabHost控件,并找到每一个选项卡
3、添加选项卡的内容
4、然后就是选项卡的切换
1、在Activity的布局文件中使用TabHost
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!-- Tabwidget的位置决定了tabhost选项卡的位置,移动到父控件的第一个选项卡在上,反之成立 --> <!-- 这是整个选项卡 --> <!-- tabStripEnabled选项卡底部没用的部分 --> <!-- divider 去除选项卡之间的分割线 --> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:background="#565656" android:tabStripEnabled="false" android:divider="@null" /> <FrameLayout android:id="@+id/realtabcontent" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0" /> </LinearLayout> </TabHost>
2、初始化TabHost控件,并找到每一个选项卡
tabHost = (TabHost) findViewById(android.R.id.tabhost); TabWidget tw = (TabWidget) ((LinearLayout) tabHost.getChildAt(0)) .getChildAt(TAB_UP); for(int i = 0 ; i < mTabtexts.length ; i ++){ LinearLayout tab = (LinearLayout) getLayoutInflater().inflate (R.layout.tab_indicator, tw, false); ((ImageView)tab.getChildAt(0)).setImageResource(mImages[i]); ((TextView)tab.getChildAt(1)).setText(mTabtexts[i]); mTabs.add(tab); } tabHost.setup();//这一步必须有 tabHost.setOnTabChangedListener(changeListener);
3、添加选项卡的内容
int i = 0 ; for(LinearLayout tab : mTabs) tabHost.addTab(tabHost.newTabSpec(mTags[i++]) .setIndicator(tab) .setContent(new TabContent(this)));
4、然后就是选项卡的切换
@Override protected void tabChange(String tabId) { boy = (BoyFragment) manager.findFragmentByTag(mTags[0]); girl = (GirlFragment) manager.findFragmentByTag(mTags[1]); /** FragmentTransaction 在使用之前使用beginTransaction,每一次使用之后需要commit */ transaction = manager.beginTransaction(); detachAll(); toAttach(tabId); // 使用这个方法提交会有一个问题,当外部调用tabhost.setCurrentTab()时,会报错 */ transaction.commitAllowingStateLoss(); } private void detachAll(){ if (boy != null) transaction.detach(boy); if (girl != null) transaction.detach(girl); } private void toAttach(String tag) { if(mTags[0].equals(tag)){ if (boy == null) { transaction.add(R.id.realtabcontent, new BoyFragment(), tag); /** 这里创建Fragment对象,并且绑定tag */ } else { transaction.attach(boy); } } else if(mTags[1].equals(tag)){ if (girl == null) { transaction.add(R.id.realtabcontent, new GirlFragment(), tag); } else { transaction.attach(girl); } } }
- MyTabHostAndFragment.rar (1.4 MB)
- 下载次数: 20
发表评论
-
MVP模式与MVC模式
2014-06-28 22:30 748MVP 是从经典的模式MVC ... -
.9.png图片
2014-01-25 10:57 591使用 “draw9patch”工具绘制点九图片,左、上的画黑 ... -
杂乱的知识点
2014-01-23 15:55 580获取RadioGroup中RadioButton选中的内 ... -
ScrollView下的LinearLayout的高度问题
2014-01-10 09:47 1401ScrollView下的LinearLayout的高度只能 ... -
AsyncTask(doInBackground不工作)
2013-12-27 14:35 851深入解析AsyncTask(doInBackgro ... -
ViewPager和ScrollView滑动冲突
2013-12-27 01:41 1983ViewPager和ScrollView结合使用时,View ... -
adb无线连接
2013-12-20 14:40 680adb无线连接,Log和调试日志都可以正常输出 只能在局 ... -
图片设置圆角、圆形、投影
2013-12-17 20:58 851/**图片转换成圆形 */ public Bitmap ... -
需要注意的问题
2013-12-17 14:21 985StartActivityForResult的问题在Ac ... -
异常汇总
2013-12-17 12:55 3072java.lang.IllegalStateExcept ... -
Bundle传递对象后,内存中该对象地址的问题
2013-12-17 09:54 959在Fragment中传递 对象时发现了一个问题:将Appc ... -
UI设计中的48DP定律
2013-12-16 23:20 509其实对于一个非技术 ... -
自定义控件
2013-12-16 10:57 3781、在res/values 文件下定义一个attrs.xml ... -
Color问题总结
2013-12-12 17:13 649在开发中使用View.setBackgroundColor(0 ... -
ViewPager总结
2013-12-12 16:09 738ViewPager的包android.support.v4.v ... -
support-v4关联
2013-12-12 15:46 6181、在libs下创建android-support-v4.ja ... -
TextView颜色
2013-12-12 00:49 678ImageView 设置选中和不选中有不同的背景时,可以在re ...
相关推荐
在Android开发中,构建一个用户友好的界面是至关重要的,`AndroidTabhost+Fragment`的项目框架就是一个典型的实例,它允许开发者创建具有多个视图的多标签应用程序。在这个框架中,`Tabhost`用于管理各个标签,而`...
在Android开发中,"ImageView 圆环旋转"和"仿微信底部TabHost+fragment"是两个常见的需求,这里我们将详细探讨这两个知识点。 首先,我们来看"ImageView 圆环旋转"。在Android应用中,有时我们需要实现一个图片在...
很长一段时间没有上传资源了,最近觉得微信的主界面滑动很好用,研究了下,秉着开源...主要有 TabHost + Fragment 来实现。 当然,另一种实现方式是 ViewGroup + ViewPager,异曲同工,不过我这里没有采用这种方式。
本示例介绍如何使用TabHost结合Fragment来实现这一功能,同时支持滑动切换,以适应API级别19及以上的设备。在API 13之后,原生的TabHost组件不再推荐使用,因此我们需要使用更现代的方式来实现类似的功能。 首先,...
在Android应用开发中,`TabHost` 和 `Fragment` 是两个关键组件,它们结合使用可以构建出具有多个可切换选项卡的应用界面。本教程将深入探讨如何利用 `android:TabHost` 和 `Fragment` 实现Tab切换功能。 首先,`...
在Android应用开发中,`Fragment`、`TabHost`和`RadioGroup`是构建多页面、多选项交互界面的重要组件。下面将详细解释这三个组件及其结合使用的知识点。 首先,`Fragment`是Android 3.0(API级别11)引入的一个重要...
在Android应用开发中,组合使用`TabHost`、`Fragment`、`ViewPager`以及`ActionBar`可以构建出复杂的用户界面,提供丰富的交互体验。这里我们将深入探讨这些组件以及`NetworkImageView`的用法。 首先,`TabHost`是...
在Android应用开发中,构建一个用户友好的界面是至关重要的,`TabHost`、`Fragment`、`Action Bar`和`ViewPager`都是Android SDK提供的组件,用于创建动态且交互丰富的界面。下面将详细讲解这些组件及其在实际项目中...
每个标签页通常对应一个独立的活动(Activity)或者视图(Fragment),使得用户可以方便地在不同功能之间切换。开发者可以通过TabSpec类来定义每个标签页,并通过TabHost的setup方法将它们添加到界面上。 3. **...
总的来说,理解和掌握`TabHost`和`ActivityGroup`有助于了解Android的历史和演进,但现代Android开发应优先考虑使用更先进的组件和技术,如`Fragment`和`Jetpack`库,以实现更高效、更稳定的应用。
每个Tab下的页面可能由`Fragment`实现,如`Page1Fragment`、`Page2Fragment`等,这些Fragment对应TabHost的不同标签。 此外,为了实现滑动切换,可能还会涉及到`OnPageChangeListener`接口的使用,通过实现`...
它是`TabHost`的一个子类,主要针对API 17及以上版本设计,提供了与`Fragment`交互的能力。`FragmentTabHost`的优点在于可以方便地在不同的`Fragment`间切换,而无需重新加载整个Activity。 接着,我们来了解`...
在Android开发中,`WebView`、`Fragment`、`TabHost`以及多线程是构建复杂用户界面和优化性能的关键组件。以下是对这些知识点的详细解释: 1. **WebView**: `WebView`是Android SDK提供的一种原生控件,用于在应用...
`FragmentTabHost`结合了`TabHost`和`Fragment`的优势,使得在不同屏幕尺寸的设备上,尤其是平板电脑,能够更好地展示多面板内容。下面将详细解释`FragmentTabHost`以及如何在Android Studio中使用它来创建选项卡式...
在Android开发中,`TabHost`和`Fragment`是两种重要的组件,它们分别用于实现界面的标签切换和模块化布局管理。本示例项目“tabhost + fragment”旨在展示如何结合使用这两种技术来构建一个功能丰富的应用界面。下面...
自Android3.2之后,TabActibvity被弃用(Deprecated),取而代之的是FragmentActivity,因为Fragment...原来的TabActibvity+TabHost+Activity那套还可以用,不过强烈建议改用FragmentActivity+FragmentTabHost+Fragement
在Android应用开发中,`TabHost`和`Fragment`是两个关键组件,它们共同用于创建具有多标签(Tab)界面的应用。`TabHost`是Android早期版本中的一个控件,用于实现标签页式布局,而`Fragment`是自Android 3.0(API...
4. 在`OnClickListener`中,根据选中的`RadioButton`来切换显示相应的内容区域,这可以是`Fragment`或者`ViewGroup`。 5. 通过`RadioButton`的状态改变,更新内容区域显示,实现与用户交互的同步反馈。 这种方法的...
在实现这个例子时,开发者首先会创建TabHost,并为每个Tab指定对应的Activity或Fragment。然后,他们会集成SlidingMenu,通常是将菜单布局嵌入到主Activity的根布局中,并监听滑动手势。为了使SlidingMenu与TabHost...