FragmentTabHost使用方法详解

FragmentTabHost使用方法详解,第1张

概述FragmentTabHost是support-v包下提供的用于集成和管理Fragment页面的组件.今天要实现的效果图如下:

FragmentTabHost是support-v包下提供的用于集成和管理Fragment页面的组件.

今天要实现的效果图如下:

整体结构是MainActivity+5个模块的Fragment.

MainActivity的布局如下:

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical"> <!--真正的内容视图,用于展示Fragment--> <FrameLayout  androID:ID="@+ID/real_tabcontent"  androID:layout_wIDth="match_parent"  androID:layout_height="0dp"  androID:layout_weight="1"/> <!--tabhost,必须使用系统的ID--> <androID.support.v4.app.FragmentTabHost  androID:ID="@androID:ID/tabhost"  androID:layout_wIDth="match_parent"  androID:layout_height="wrap_content"  >  <!--tabcontent,必须使用系统的ID-->  <FrameLayout   androID:ID="@androID:ID/tabcontent"   androID:layout_wIDth="0dp"   androID:layout_height="0dp"   androID:layout_weight="0"/> </androID.support.v4.app.FragmentTabHost></linearLayout>

每个tab的布局如下:

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:gravity="center"    androID:orIEntation="vertical"> <!--tab图片--> <ImageVIEw  androID:ID="@+ID/iv_tab"  androID:layout_wIDth="26dp"  androID:layout_height="26dp"  /> <!--tab名字--> <TextVIEw  androID:ID="@+ID/tv_tab"  androID:layout_wIDth="wrap_content"  androID:layout_height="wrap_content"  androID:layout_margintop="1dp"  androID:textSize="12sp"/></linearLayout>

MainActivity代码如下:

package blog.csdn.net.mchenys.bsbdj.modul.main;import androID.content.res.colorStateList;import androID.os.Bundle;import androID.support.v4.app.FragmentTabHost;import androID.text.TextUtils;import androID.vIEw.VIEw;import androID.Widget.ImageVIEw;import androID.Widget.TabHost;import androID.Widget.TextVIEw;import blog.csdn.net.mchenys.bsbdj.R;import blog.csdn.net.mchenys.bsbdj.common.base.BaseActivity;import blog.csdn.net.mchenys.bsbdj.modul.attention.vIEw.AttentionFragment;import blog.csdn.net.mchenys.bsbdj.modul.essence.vIEw.EssenceFragment;import blog.csdn.net.mchenys.bsbdj.modul.mine.vIEw.mineFragment;import blog.csdn.net.mchenys.bsbdj.modul.newpost.vIEw.NewpostFragment;import blog.csdn.net.mchenys.bsbdj.modul.publish.vIEw.PublishFragment;import blog.csdn.net.mchenys.bsbdj.mvp.presenter.impl.MvpBasePresenter;/** * Created by mChenys on 2016/5/27. */public class MainActivity extends BaseActivity { //定义数组来存放tab的图片选择器 private int[] mTabImage = {R.drawable.main_bottom_essence_selector,R.drawable.main_bottom_latest_selector,R.drawable.main_bottom_writeposts_selector,R.drawable.main_bottom_news_selector,R.drawable.main_bottom_my_selector}; //tab选项卡的文字 private String[] mTabTitle = {"精华","新帖","","关注","我的"}; //每个tab对应的Fragment的字节码对象 private Class[] fragmentArray = {EssenceFragment.class,NewpostFragment.class,PublishFragment.class,AttentionFragment.class,mineFragment.class}; @OverrIDe protected boolean isHomePage() {  return true; } @OverrIDe public Integer getLayoutResID() {  return R.layout.activity_main; } @OverrIDe public voID initVIEw() {  //获取tabhost  FragmentTabHost tabHost = (FragmentTabHost) findVIEwByID(androID.R.ID.tabhost);  //绑定tabContent  tabHost.setup(this,getSupportFragmentManager(),R.ID.real_tabcontent);  //去掉分割线  tabHost.getTabWidget().setdivIDerDrawable(null);  for (int i = 0; i < fragmentArray.length; i++) {   //绑定Fragment,添加到的FragmentTabHost   //设置tab的名称和vIEw   TabHost.TabSpec tabSpec = tabHost.     newTabSpec(mTabTitle[i]).     setIndicator(getTabItemVIEw(i));   Bundle bundle = new Bundle();   bundle.putString("Title",mTabTitle[i]);   //添加tab和关联对应的fragment   tabHost.addTab(tabSpec,fragmentArray[i],bundle);   //设置tab的背景色   tabHost.getTabWidget().     getChildAt(i).     setBackgroundcolor(getResources().getcolor(R.color.bgcolor));  }  //默认选中第一个tab  tabHost.setCurrentTab(0);  //设置tab的切换监听  tabHost.setonTabChangedListener(new TabHost.OnTabchangelistener() {   @OverrIDe   public voID onTabChanged(String tabID) {    //可以在这里监听tab的切换   }  }); } //tab的字体选择器 colorStateList mcolorStateList; /**  * 给Tab按钮设置图标和文字  */ private VIEw getTabItemVIEw(int index) {  VIEw vIEw = getLayoutInflater().inflate(R.layout.vIEw_tab_indicator,null);  ImageVIEw imageVIEw = (ImageVIEw) vIEw.findVIEwByID(R.ID.iv_tab);  TextVIEw textVIEw = (TextVIEw) vIEw.findVIEwByID(R.ID.tv_tab);  //设置图片选择器  imageVIEw.setimageResource(mTabImage[index]);  //设置字体选择器  if (mcolorStateList == null) {   mcolorStateList = getResources().     getcolorStateList(R.color.main_bottom_text_selector);   textVIEw.setTextcolor(mcolorStateList);  }  //设置tab的文字  if (TextUtils.isEmpty(mTabTitle[index])) {   //如果没有名称,则隐藏tab下的textVIEw   textVIEw.setVisibility(VIEw.GONE);  } else {   textVIEw.setVisibility(VIEw.VISIBLE);   textVIEw.setText(mTabTitle[index]);  }  return vIEw; } @OverrIDe public voID initListener() { } @OverrIDe public voID initData() { } @OverrIDe public voID reLoadData() { } @OverrIDe public voID onClick(VIEw v) { } @OverrIDe public MvpBasePresenter bindPresenter() {  return null; }}

最后附上字体选择器

<?xml version="1.0" enCoding="utf-8"?><selector xmlns:androID="http://schemas.androID.com/apk/res/androID"> <item androID:state_selected="false" androID:color="@color/main_bottom_text_normal" /> <item androID:state_selected="true" androID:color="@color/main_bottom_text_select" /></selector>

图片选择器有5个,这里附上一个,其他类似:

<?xml version="1.0" enCoding="utf-8"?><selector xmlns:androID="http://schemas.androID.com/apk/res/androID"> <item androID:state_selected="false" androID:drawable="@drawable/main_bottom_essence_normal" /> <item androID:state_selected="true" androID:drawable="@drawable/main_bottom_essence_press" /></selector>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的FragmentTabHost使用方法详解全部内容,希望文章能够帮你解决FragmentTabHost使用方法详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1144845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存