Android的FragmentTabHost使用总结(顶部或底部菜单栏)

来源:互联网 发布:黑客python 编辑:程序博客网 时间:2024/05/20 07:36

前言:

我们经常看到一些app的自带一些标签,并且可以来回进行切换,

本章我们就通过FragmentTabHost来学习一下其如何实现,效果图如下:





步骤一:

编写布局文件

<android.support.v4.app.FragmentTabHost    android:layout_width="match_parent"    android:layout_height="match_parent"    android:id="@android:id/tabhost"    >    <!--    系统要求,具体原因暂时还未追究,不然就会报错    这个FrameLayout并不是显示内容的fragment    且其id必须为tabcontent    -->    <FrameLayout        android:id="@android:id/tabcontent"        android:layout_width="0dp"        android:layout_height="0dp"        android:layout_weight="0"/></android.support.v4.app.FragmentTabHost><!--    用来存放标签所对应的内容,用来显示我们的fragment    若其放置在FragmentTabHost下边,则标签就位于上边,    反之,标签则位于下边    --><FrameLayout    android:layout_width="match_parent"    android:layout_height="0dp"    android:layout_weight="1"    android:id="@+id/fragment"    ></FrameLayout>


步骤二:

Activity要继承于FragmentActivity

/** * 由于AppCompatActivity继承FragmentActivity * 所以无需再去继承FragmentActivity */public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);.....    }}


步骤三:

添加Tab到TabHost中,且让Tab与 Tab所要显示的内容(fragment)绑定在一起

mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);/** * setup()里边,其才去获取到TabWidget,所以在此之前,不能直接调用getTabWidget()方法; */mTabHost.setup(this, getSupportFragmentManager(), R.id.fragment);/** *addTab:添加标签到TabHost * setIndicator:表示设置标签的logo */mTabHost.addTab(mTabHost.newTabSpec("blue").setIndicator("blue"),        BlueFragment.class, null);mTabHost.addTab(mTabHost.newTabSpec("orange").setIndicator("orange"),        OrangeFragment.class, null);mTabHost.addTab(mTabHost.newTabSpec("green").setIndicator("green"),        GreenFragment.class, null);


总结:

1>

Tab存在于TabWidget内,而TabWidget是存在于TabHost内。与此同时,

在TabHost内无需在写一个TabWidget,系统已经内置了一个TabWidget

2>

FragmentTabHost的布局文件中,需要有如下子布局:

<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0"/>

3>

关于fragment内容的布局,其位置可以放置在FragmentTabHost外面的上边,里边,或者外边的下边都可以;

当放置在上边时,那么标签是位于底部的;

当放置在里边或者外面的下边时,则此时,标签是位于顶部的;


参考:

FragmentTabHost


源码:

FragmentTabHost示例源码

0 0
原创粉丝点击