FragmentTabHost+Fragment搭建应用主框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FragmentTabHost+Fragment搭建应用主框架相关的知识,希望对你有一定的参考价值。

一、主界面Activity代码
  1. public class MainActivity extends FragmentActivity{
  2. //定义FragmentTabHost对象
  3. private FragmentTabHost mTabHost;
  4. //定义一个布局填充器
  5. private LayoutInflater layoutInflater;
  6. //定义数组来存放Fragment界面
  7. private Class<?> fragmentArray[] = {HomeFragment.class,SquareFragment.class,MessageFragment.class,SettingFragment.class};
  8. //定义数组来存放按钮图片
  9. private int mImageViewArray[] = {R.drawable.tab_home_btn,R.drawable.tab_square_btn,R.drawable.tab_message_btn,
  10. R.drawable.tab_setting_btn};
  11. //Tab选项卡的文字
  12. private String mTextviewArray[] = {"首页", "广场", "消息", "设置"};
  13. public void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. initView();
  17. }
  18. /**
  19. * 初始化组件
  20. */
  21. private void initView(){
  22. //实例化布局对象
  23. layoutInflater = LayoutInflater.from(this);
  24. //实例化TabHost对象,得到TabHost
  25. mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
  26. mTabHost.setup(this, getSupportFragmentManager(), R.id.fragment_container);
  27. //得到fragment的个数
  28. int count = fragmentArray.length;
  29. for(int i = 0; i < count; i++){
  30. //为每一个Tab按钮设置图标、文字和内容
  31. TabSpec tabSpec = mTabHost.newTabSpec(mTextviewArray[i]).setIndicator(getTabItemView(i));
  32. //将Tab按钮添加进Tab选项卡中
  33. mTabHost.addTab(tabSpec, fragmentArray[i], null);
  34. //设置Tab按钮的背景
  35. mTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.selector_tab_background);
  36. }
  37. }
  38. /**
  39. * 给Tab按钮设置图标和文字
  40. */
  41. private View getTabItemView(int index){
  42. View view = layoutInflater.inflate(R.layout.tab_item_view, null);
  43. ImageView imageView = (ImageView) view.findViewById(R.id.imageview_tab_item);
  44. imageView.setImageResource(mImageViewArray[index]);
  45. TextView textView = (TextView) view.findViewById(R.id.textview_tab_item);
  46. textView.setText(mTextviewArray[index]);
  47. return view;
  48. }
  49. }
二、主界面布局
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. <FrameLayout
  7. android:id="@+id/fragment_container"
  8. android:layout_weight="1"
  9. android:layout_width="match_parent"
  10. android:layout_height="0dp" />
  11. <android.support.v4.app.FragmentTabHost
  12. android:id="@android:id/tabhost"
  13. android:layout_width="match_parent"
  14. android:layout_height="wrap_content">
  15. <FrameLayout
  16. android:id="@android:id/tabcontent"
  17. android:layout_width="0dp"
  18. android:layout_height="0dp"
  19. android:layout_weight="0" />
  20. </android.support.v4.app.FragmentTabHost>
  21. </LinearLayout>
三、以上两步完成即可实现主框架的搭建。需要注意的是:fragmentArray[],mImageViewArray[],mTextViewArray[]三个数组的内容都是自己定义的,但是三个数组的长度必须保持一致,三个数组中的数据是一一对应的。




以上是关于FragmentTabHost+Fragment搭建应用主框架的主要内容,如果未能解决你的问题,请参考以下文章

android中 Fragment+FragmentTabHost

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

FragmentTabHost + Fragment 使用小记

FragmentTabHost+Fragment搭建应用主框架

Android典型界面设计——FragmentTabHost+Fragment实现底部tab切换

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