FragmentTabHost的使用方法总结

在开发商城上中时为了实现底部导航栏使用了fragmentTabHost方法,总结如下:

1、Activity必须继承fragmentActivity方法。

2.必须调用setup()方法

3.添加TabSpec

具体代码如下:

主要布局:

activity_main:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity"    android:orientation="vertical">

<FrameLayout        android:id="@+id/realtabcontent"        android:layout_width="fill_parent"        android:layout_height="0dip"        android:layout_weight="1"        android:background="@color/colorAccent"        />

<android.support.v4.app.FragmentTabHost        android:id="@android:id/tabhost"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        >

<FrameLayout            android:id="@android:id/tabcontent"            android:layout_width="0dp"            android:layout_height="0dp"            android:layout_weight="0" />    </android.support.v4.app.FragmentTabHost></LinearLayout>

主要代码逻辑:

public class MainActivity extends AppCompatActivity {    private FragmentTabHost mTabHost;    private LayoutInflater mInflater;    private List<Tab> mTabs = new ArrayList<>(5);

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initTab();

}

private void initTab() {        Tab tab_home = new Tab(HomeFragment.class,R.string.home,R.mipmap.icon_home);        Tab tab_hot = new Tab(HotFragment.class,R.string.hot,R.mipmap.icon_hot);        Tab tab_category = new Tab(CategoryFragment.class,R.string.catagory,R.mipmap.icon_discover);        Tab tab_cart = new Tab(CartFragment.class,R.string.cart,R.mipmap.icon_cart);        Tab tab_mine= new Tab(MineFragment.class,R.string.mine,R.mipmap.icon_user);

mTabs.add(tab_home);        mTabs.add(tab_hot);        mTabs.add(tab_category);        mTabs.add(tab_cart);        mTabs.add(tab_mine);

mInflater = LayoutInflater.from(this);        mTabHost  = (FragmentTabHost) findViewById(android.R.id.tabhost);        mTabHost.setup(this,getSupportFragmentManager(),R.id.realtabcontent);

for(Tab tab : mTabs){            TabHost.TabSpec tabSpec = mTabHost.newTabSpec(getString(tab.getTitle()));            tabSpec.setIndicator( buildindictor(tab));            mTabHost.addTab(tabSpec,tab.getFragment(),null);

}

}    private View buildindictor(Tab tab){        View view = mInflater.inflate(R.layout.tab_indication,null);        ImageView img = (ImageView) findViewById(R.id.icon_tab);        TextView txt = (TextView) findViewById(R.id.txt_indicator);

img.setBackgroundResource(tab.getIcon());        txt.setText(tab.getTitle());        return view;

}} 
在新建CartFragment:\CategoryFragment;\.HomeFragment;\.HotFragment;\.MineFragmen类,都必须继承v4包下的Fragment
public class HotFragment extends Fragment {    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        return  inflater.inflate(R.layout.fragment_hot,container,false);    }}
时间: 2024-10-16 15:40:55

FragmentTabHost的使用方法总结的相关文章

FragmentTabHost使用方法

欢迎Follow我的GitHub, 关注我的CSDN. FragmentTabHost作为Android4.0版本的控件, 已经被项目广泛使用, 5.0版本又推出TabLayout+ViewPager显示多页. 我来讲解如何使用FragmentTabHost. Github下载地址 主要包括: (1) 自定义Tab的图片资源和去掉分割线. (2) 缓存Fragment的布局, 减少填充. 在切换页面时, 控件会调用Fragment的onCreateView, 重新创建页面. 通过缓存页面, 可以

FragmentTabHost切换Fragment避免重新加载Fragment,即重复调用Fragment的onCreateView

FragmentTabHost一切换再返回的时候Fragment就会调用onCreateView重新绘制页面,被这个问题坑了好久.刚开始也不知道是 FragmentTabHost还是Fragment的原因,网上找了好久也没找到解决办法.终于搜了好久还是找到了: 解决方法,在fragment onCreateView 里缓存View: private View rootView;// 缓存Fragment view @Override public View onCreateView(Layout

FragmentTabHost切换Fragment时避免重复加载UI

使用FragmentTabHost时,Fragment之间切换时每次都会调用onCreateView方法,导致每次Fragment的布局都重绘,无法保持Fragment原有状态. 解决办法:在Fragment onCreateView方法中缓存View 1 private View rootView;//缓存Fragment view 2 3 @Override 4 public View onCreateView(LayoutInflater inflater, ViewGroup conta

Fragment 结合FragmentTabHost使用心得

FragmentTabHost我也不知道是什么,就是可用用来当新浪微博底部那个状态栏的工具.现在说下怎么使用 首先activity要继承FragmentActivity 例如 public class A extends FragmentActivity{ //定义FragmentTabhost private FragmentTabhost tab; private TextView text; private String str[]={"短信","电话",&q

FragmentTabHost+FrameLayout实现底部导航栏

app经常用到底部导航栏,早前使用过RadioGroup+FrameLayout实现或者RadioGroup+ViewPager实现,现在基本使用FragmentTabHost+FrameLayout来实现,因为使用起来简单易用.下面写一个小例子简要地总结一下这个组合. 首先,看一下例子的最终运行效果图 -> 这5个图标的效果其实都是一样的,只要做出来一个,以此类推就可以写出其他几个 第一步, FragmentTabHost+FrameLayout布局,先看一下代码: <?xml versio

FragmentActivity+FragmentTabHost+Fragement替代TabActibvity+TabHost+Activity

自Android3.2之后,TabActibvity被弃用(Deprecated).取而代之的是FragmentActivity.由于Fragment比Activiy更灵活.消耗的资源更小.全然可以满足TabActivity的效果,所以直接替代之.原来的TabActibvity+TabHost+Activity那套还可以用,只是强烈建议改用FragmentActivity+FragmentTabHost+Fragement FragmentTabHost使用方法: 1. 定义FragmentAc

首页-底部Tab导航(菜单栏)的实现:FragmentTabHost+ViewPager+Fragment

前言 Android开发中使用底部菜单栏的频次非常高,主要的实现手段有以下: - TabWidget - 隐藏TabWidget,使用RadioGroup和RadioButton - FragmentTabHost - 5.0以后的TabLayout - 最近推出的 Bottom navigation 今天带大家来探索下如何用Fragment+FragmentTabHost++ViewPager 实现底部菜单栏 目录 总体设计思路 Fragment:存放不同选项的页面内容 FragmentTab

使用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab

大多数应用程序都会在底部使用3~5个Tab对应用程序的主要功能进行划分,对于一些信息量非常大的应用程序,还需要在每个Tab下继续划分子Tab对信息进行分类显示. 本文实现采用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab,实现原理如下: 第一层Tab:FragmentTabHost + Fragment; 第二层Tab:在第一层的Fragment中使用TabLayout和ViewPager实现. 第一层Tab实现: 1.布局文件activity_main

Android项目开发实战之使用Fragment和FragmentTabHost搭建底部菜单(一)

学习在于实用,只有把自己学到的东西真正的融入到我们的开发中,并且使用的得心应手,那才是真正的掌握.而想把技术使用的得心应手并不是一蹴而就的,需要不断的巩固自己的知识体系,需要大量的实战练习,当然还不能缺少你的专研和耐心. 但是很多小伙伴们并不一定学过的知识都掌握了,而且相信很多伙伴们即使学习一种技术也还是停留在读过,看过,学习过,并没有真正的实战过,所以当时学习的技术觉得自己真正的学会了,搞懂了,而且信心满满的觉得自己可以不必在练习了,这是不对的,因为一时的学习并没有立马转变成为你的技能,而是需