如何获取指定id里的a标签FragmentTabHost中指定标签页的Fragment

15:46 提问
用Android Studio怎么实现FragmentTabHost
哪有教程求告知感激不尽
按赞数排序
FragmentTabHost的使用主要涉及到2个问题,1要保存状态,2要tab样式能自定义。参考了网上的大神们的文章,总结了如下几点。
1,使用原生的FragmentTabHost,底部的tab可以自定义布局,但是各个fragment不能保存状态。
2,使用radiogroup代替原生的tabhost,可以通过fragment的show和hide以达到保存状态的目的,但是tab样式不能做过多的调整。
3,通过重写FragmentTabHost类将切换Fragment的方式由detach和attach改为hide和show,这样既可以自定义tab样式又能达到保存状态的目的。
4,通过自定义tab布局达到第3点的目的,正如2中所说,将radiogroup替换成自定义布局即可,不过xml文件可能会比较复杂。
第3和第4都能达到目的,不过博主一般会选择使用第3种,但是第4种也有很大的作用,比如要实现点击tab弹出气泡菜单的情况。
其他相关推荐温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
河北保定人
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
  使用FragmentTabHost+Fragment实现底部tab切换,效果如图所示&二、案例主要组件1、MainActivity布局  把整个Activity分成两部TabHost和TabContent,TabHost包含各个tab,tab之间切换将在TabContent所关联的FrameLayout区域中显示各自板块的内容复制内容到剪贴板&LinearLayout&&xmlns:android="/apk/res/android"&&&&&&xmlns:tools="/tools"&&&&&&android:layout_width="match_parent"&&&&&&android:layout_height="match_parent"&&&&&&android:orientation="vertical"&&&&&&tools:context=".MainActivity"&&&&&&&&&FrameLayout&&android:id="@+id/contentLayout"&&&&&&&&&&&android:layout_width="match_parent"&&&&&&&&&&android:layout_height="0dp"&&&&&&&&&&android:layout_weight="1"&&&&&&&&&/FrameLayout&&&&&&&&&android.support.v4.app.FragmentTabHost&&&&&&&&&&&android:id="@android:id/tabhost"&&&&&&&&&&&android:layout_width="match_parent"&&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&&android:background="#F6F6F6"&&&&&&&&&&&&&&&&&&&&&&&&FrameLayout&android:id="@android:id/tabcontent"&&&&&&&&&&&&&&&android:layout_height="0dp"&android:layout_width="0dp"&&&&&&&&&&&&&&&/&&&&&&&&&/android.support.v4.app.FragmentTabHost&&&&/LinearLayout&&&2、MainActivity代码复制内容到剪贴板public&class&MainActivity&extends&FragmentActivity&&&implements&OnTabChangeListener{&&&&&&private&FragmentTabHost&tabH&&&&&&@Override&&&&&&protected&void&onCreate(Bundle&savedInstanceState)&{&&&&&&&&&&super.onCreate(savedInstanceState);&&&&&&&&&&setContentView(R.layout.activity_main);&&&&&&&&&&tabHost=(FragmentTabHost)super.findViewById(android.R.id.tabhost);&&&&&&&&&&tabHost.setup(this,super.getSupportFragmentManager()&&&&&&&&&&&&&&&&&&,R.id.contentLayout);&&&&&&&&&&tabHost.getTabWidget().setDividerDrawable(null);&&&&&&&&&&tabHost.setOnTabChangedListener(this);&&&&&&&&&&initTab();&&&&&&&&}&&&&&&private&void&initTab(){&&&&&&&&&&String&tabs[]=TabDb.getTabsTxt();&&&&&&&&&&for(int&i=0;i&tabs.i++){&&&&&&&&&&&&&&TabSpec&tabSpec=tabHost.newTabSpec(tabs[i]).setIndicator(getTabView(i));&&&&&&&&&&&&&&tabHost.addTab(tabSpec,TabDb.getFragments()[i],null);&&&&&&&&&&&&&&tabHost.setTag(i);&&&&&&&&&&}&&&&&&}&&&&&&private&View&getTabView(int&idx){&&&&&&&&&&View&view=LayoutInflater.from(this).inflate(R.layout.footer_tabs,null);&&&&&&&&&&((TextView)view.findViewById(R.id.tvTab)).setText(TabDb.getTabsTxt()[idx]);&&&&&&&&&&if(idx==0){&&&&&&&&&&&&&&((TextView)view.findViewById(R.id.tvTab)).setTextColor(Color.RED);&&&&&&((ImageView)view.findViewById(R.id.ivImg)).setImageResource(TabDb.getTabsImgLight()[idx]);&&&&&&&&&&}else{&&&&&&&&&&&&&&((ImageView)view.findViewById(R.id.ivImg)).setImageResource(TabDb.getTabsImg()[idx]);&&&&&&&&&&}&&&&&&&&&&return&&&&&&&}&&&&&&@Override&&&&&&public&boolean&onCreateOptionsMenu(Menu&menu)&{&&&&&&&&&&//&Inflate&the&&this&adds&items&to&the&action&bar&if&it&is&present.&&&&&&&&&&getMenuInflater().inflate(R.menu.main,&menu);&&&&&&&&&&return&true;&&&&&&}&&&&&&@Override&&&&&&public&void&onTabChanged(String&tabId)&{&&&&&&&&&&//&TODO&Auto-generated&method&stub&&&&&&&&&&updateTab();&&&&&&}&&&&&&private&void&updateTab(){&&&&&&&&&&TabWidget&tabw=tabHost.getTabWidget();&&&&&&&&&&for(int&i=0;i&tabw.getChildCount();i++){&&&&&&&&&&&&&&View&view=tabw.getChildAt(i);&&&&&&&&&&&&&&ImageView&iv=(ImageView)view.findViewById(R.id.ivImg);&&&&&&&&&&&&&&if(i==tabHost.getCurrentTab()){&&&&&&&&&&&&&&&&&&((TextView)view.findViewById(R.id.tvTab)).setTextColor(Color.RED);&&&&&&&&&&&&&&&&&&iv.setImageResource(TabDb.getTabsImgLight()[i]);&&&&&&&&&&&&&&}else{&&&&&&&&((TextView)view.findViewById(R.id.tvTab)).setTextColor(getResources().getColor(R.color.foot_txt_gray));&&&&&&&&&&&&&&&&&&iv.setImageResource(TabDb.getTabsImg()[i]);&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&}&&&&} &3、TabDb组件&提供界面设计所需的tab文本、tab图片和Fragment类型数据复制内容到剪贴板public&class&TabDb&{&&&&&&public&static&String[]&getTabsTxt(){&&&&&&&&&&String[]&tabs={"新闻","阅读","试听","发现","&我"};&&&&&&&&&&return&&&&&&&}&&&&&&public&static&int[]&getTabsImg(){&&&&&&&&&&int[]&ids={R.drawable.foot_news_normal,R.drawable.foot_read_normal,R.drawable.foot_vdio_normal,R.drawable.foot_fond_normal,R.drawable.foot_out_normal};&&&&&&&&&&return&&&&&&&}&&&&&&public&static&int[]&getTabsImgLight(){&&&&&&&&&&int[]&ids={R.drawable.foot_news_light,R.drawable.foot_read_light,R.drawable.foot_vdio_light,R.drawable.foot_found_light,R.drawable.foot_out_light};&&&&&&&&&&return&&&&&&&}&&&&&&public&static&Class[]&getFragments(){&&&&&&&&&&Class[]&clz={NewsFragment.class,ReadFragment.class,VideoFragment.class,FoundFragment.class,OwnerFragment.class};&&&&&&&&&&return&&&&&&&}&&} &4、每个tab各自对应的Fragment组件  共5个Fragment为NewsFragment、ReadFragment、FoundFragment、OwnerFragment、VideoFragment,根据不同板块各自设计界面,这里重点是如何实现底部tab切换,简单布局一下即可,以NewsFragment为例代码如下:复制内容到剪贴板public&class&NewsFragment&extends&Fragment&{&&&&&&@Override&&&&&&public&void&onAttach(Activity&activity)&{&&&&&&&&&&//&TODO&Auto-generated&method&stub&&&&&&&&&&super.onAttach(activity);&&&&&&}&&&&&&@Override&&&&&&public&View&onCreateView(LayoutInflater&inflater,&ViewGroup&container,&&&&&&&&&&&&&&Bundle&savedInstanceState)&{&&&&&&&&&&//&TODO&Auto-generated&method&stub&&&&&&&&&&TextView&tvTitle=new&TextView(super.getActivity());&&&&&&&&&&tvTitle.setText("新闻");&&&&&&&&&&tvTitle.setLayoutParams(new&LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));&&&&&&&&&&tvTitle.setGravity(Gravity.CENTER);&&&&&&&&&&tvTitle.setTextSize(30);&&&&&&&&&&return&tvT&&&&&&}&&&&&&@Override&&&&&&public&void&setArguments(Bundle&args)&{&&&&&&&&&&//&TODO&Auto-generated&method&stub&&&&&&&&&&super.setArguments(args);&&&&&&}&&&&} &5、tab布局样式(footer_tabs.xml)复制内容到剪贴板&?xml&version="1.0"&encoding="utf-8"?&&&&RelativeLayout&xmlns:android="/apk/res/android"&&&&&&android:layout_width="fill_parent"&&&&&&android:layout_height="wrap_content"&&&&&&&android:gravity="center"&&&&&&android:padding="5dp"&&&&&&android:background="#F6F6F6"&&&&&&&&&&&&&&ImageView&&&&&&&&&&android:id="@+id/ivImg"&&&&&&&&&&android:layout_width="wrap_content"&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&android:layout_alignParentLeft="true"&&&&&&&&&&android:layout_alignParentTop="true"&&&&&&&&&/&&&&&&&&TextView&&&&&&&&&&android:id="@+id/tvTab"&&&&&&&&&&android:layout_width="wrap_content"&&&&&&&&&&android:layout_height="wrap_content"&&&&&&&&&&android:layout_alignParentLeft="true"&&&&&&&&&&android:layout_below="@+id/ivImg"&&&&&&&&&&&&android:textColor="#AEAEAE"&&&&&&&&&&android:text="新闻"&android:layout_marginTop="2dp"/&&&&
阅读(507)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'Android典型界面设计——FragmentTabHost+Fragment实现底部tab切换',
blogAbstract:'&一、问题描述',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'河北保定人',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}FragmentTabHost+Fragment实现底部tab切换(烟台杰瑞教育Android培训部原创)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
FragmentTabHost+Fragment实现底部tab切换(烟台杰瑞教育Android培训部原创)
烟台杰瑞教育科技有限公司(简称杰瑞教育)...|
总评分0.0|
&&FragmentTabHost+Fragment实现底部tab切换
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 jsoup获取指定标签 的文章

 

随机推荐