近期刚学了Fragment,突然想在Fragment中实现TabHost,查阅相关资料后发现现在TabHost已经被FragmentTabHost替代了,因此就想着学习一下,并记录下来,接下来把一些心得分享一下。

一、使用场景

首先FragmentTabHost不仅可以在FragmentActivity中使用,也可以在Fragment中使用,通过与Fragment的结合实现TabHost的效果

二、使用步骤

1、布局文件

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent" >


<android.support.v4.app.FragmentTabHost

android:id="@android:id/tabhost"

android:layout_width="match_parent"

android:layout_height="wrap_content">


<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >


<TabWidget

android:id="@android:id/tabs"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_weight="0"

android:orientation="horizontal" />


<FrameLayout

android:id="@android:id/tabcontent"

android:layout_width="0dp"

android:layout_height="0dp"

android:layout_weight="0" />


<FrameLayout

android:id="@+id/realtabcontent"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1" />

</LinearLayout>

</android.support.v4.app.FragmentTabHost>

</RelativeLayout>

2、代码:

1)继承FragmentActivity——OnCreate()中:

FragmentTabHost fragmentTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);

fragmentTabHost.setup(this, getFragmentManager(), R.id.realtabcontent);

fragmentTabHost.addTab(fragmentTabHost.newTabSpec("tab1").setIndicator("我的意 见"), SettingFragment.class, null);

fragmentTabHost.addTab(fragmentTabHost.newTabSpec("tab2").setIndicator("常见问 题"), NotificationFragment.class, null);

2)继承Fragment——OnCreateView()中:

View layout = inflater.inflate(R.layout.fragment_sliding_feedback, null);

FragmentTabHost fragmentTabHost = (FragmentTabHost)layout.findViewById(android.R.id.tabhost);

fragmentTabHost.setup(this, getChildFragmentManager(), R.id.realtabcontent);

fragmentTabHost.addTab(fragmentTabHost.newTabSpec("tab1").setIndicator("我的意 见"), SettingFragment.class, null);

fragmentTabHost.addTab(fragmentTabHost.newTabSpec("tab2").setIndicator("常见问 题"), NotificationFragment.class, null);

return layout;