本文主要是介绍Android的FragmentTabHost使用总结(顶部或底部菜单栏),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言:
我们经常看到一些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示例源码
这篇关于Android的FragmentTabHost使用总结(顶部或底部菜单栏)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!