- 浏览: 21947 次
文章分类
最新评论
总结开发使用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 712MVP 是从经典的模式MVC ... -
.9.png图片
2014-01-25 10:57 535使用 “draw9patch”工具绘制点九图片,左、上的画黑 ... -
杂乱的知识点
2014-01-23 15:55 541获取RadioGroup中RadioButton选中的内 ... -
ScrollView下的LinearLayout的高度问题
2014-01-10 09:47 1347ScrollView下的LinearLayout的高度只能 ... -
AsyncTask(doInBackground不工作)
2013-12-27 14:35 813深入解析AsyncTask(doInBackgro ... -
ViewPager和ScrollView滑动冲突
2013-12-27 01:41 1938ViewPager和ScrollView结合使用时,View ... -
adb无线连接
2013-12-20 14:40 616adb无线连接,Log和调试日志都可以正常输出 只能在局 ... -
图片设置圆角、圆形、投影
2013-12-17 20:58 810/**图片转换成圆形 */ public Bitmap ... -
需要注意的问题
2013-12-17 14:21 953StartActivityForResult的问题在Ac ... -
异常汇总
2013-12-17 12:55 3012java.lang.IllegalStateExcept ... -
Bundle传递对象后,内存中该对象地址的问题
2013-12-17 09:54 881在Fragment中传递 对象时发现了一个问题:将Appc ... -
UI设计中的48DP定律
2013-12-16 23:20 465其实对于一个非技术 ... -
自定义控件
2013-12-16 10:57 3411、在res/values 文件下定义一个attrs.xml ... -
Color问题总结
2013-12-12 17:13 600在开发中使用View.setBackgroundColor(0 ... -
ViewPager总结
2013-12-12 16:09 698ViewPager的包android.support.v4.v ... -
support-v4关联
2013-12-12 15:46 5681、在libs下创建android-support-v4.ja ... -
TextView颜色
2013-12-12 00:49 615ImageView 设置选中和不选中有不同的背景时,可以在re ...
相关推荐
android:TabHost+Fragment实现Tab切换
该应用利用Tabhost+Fragment实现Android框架。
Fragment + TabHost + RadioGroup 结合DEMO||Fragment + TabHost + RadioGroup 结合DEMO
自己写的demo,实现一个框架,使用了tabhost+fragment+actiob bar+viewpager
很长一段时间没有上传资源了,最近觉得微信的主界面滑动很好用,研究了下,秉着开源...主要有 TabHost + Fragment 来实现。 当然,另一种实现方式是 ViewGroup + ViewPager,异曲同工,不过我这里没有采用这种方式。
ImageView 圆环旋转+仿微信底部TabHost+fragment
TabHostActivity在API 13之后就不能用了。 写了个Demo,用FragmentActivity + Tabhost实现多标签页,并添加滑动手势。 API=19,可运行
Android底部导航栏——FragmentTabHost+ViewPager+Fragment
1、实现tabhost 底部导航拦,并嵌入顶部导航栏,类似于 应用宝的上下导航 2、actionbar 的标签模式,屏幕上部导航 3、新控件NetworkImageView 的使用
studio tabhost fragment 选项卡
具体实现了webview控件,并能实现网页的前进后退功能,有MP3播放的功能和fragment的运用,和tabhost,网络获取图片,线程的运用。
使用tabhost和fragment 的demo
tabhost结合fragment做页面的切换
自Android3.2之后,TabActibvity被弃用(Deprecated),取而代之的是FragmentActivity,因为Fragment...原来的TabActibvity+TabHost+Activity那套还可以用,不过强烈建议改用FragmentActivity+FragmentTabHost+Fragement
FragmentTabHost+TabHost+ViewPager实现底部导航及滑动代码
android实现可滑动标签页有很多方法,这里给大家介绍一种官方推荐,性能最高,并且代码最少的方式,就是利用FragmentTabhost+ViewPager+FragmentPagerAdapter来实现。
此TabActivity是使用ViewPager+Fragment+RadioGroup实现TabHost选项卡,很少占用内存,不像TabHost会占用很多内存,有时候还会出现内存溢出,本人经历过此情况,因此写了此方法实现选项卡功能。
ViewPager+Fragment替代TabHost效果的简单示例
FragmentTabHost+fragment+viewpager为主体框架,登陆为模仿QQ登陆(可以记录每次登陆账号<使用sqlite>+popwindows),含有popWindow封装的弹出选择按钮。有较为复杂的xml界面。优酷跑马灯效果,上拉刷新,下拉加载...