Fragment+FragmentTabHost组件实现常见主页面(仿微信新浪)

Posted oooohuhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fragment+FragmentTabHost组件实现常见主页面(仿微信新浪)相关的知识,希望对你有一定的参考价值。

采取的方法是Fragment+FragmentTabHost组件来实现这种常见的app主页面的效果

首先给出main.xml文件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical" android:layout_width="match_parent"
 4     android:layout_height="match_parent">
 5     <FrameLayout
 6         android:id="@+id/realtabcontent"
 7         android:layout_width="fill_parent"
 8         android:layout_height="0dip"
 9         android:layout_weight="1"
10         android:background="@color/white" />
11 
12 
13     <LinearLayout
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:layout_gravity="bottom"
17         android:orientation="vertical">
18 
19         <View
20             android:layout_width="match_parent"
21             android:layout_height="1px"
22             android:background="@color/color_home_tab_line" />
23 
24         <android.support.v4.app.FragmentTabHost
25             android:id="@android:id/tabhost"
26             android:layout_width="fill_parent"
27             android:layout_height="wrap_content"
28             android:background="@color/et_divider_disable">
29 
30             <FrameLayout
31                 android:id="@android:id/tabcontent"
32                 android:layout_width="0dp"
33                 android:layout_height="0dp"
34                 android:layout_weight="0" />
35         </android.support.v4.app.FragmentTabHost>
36 
37     </LinearLayout>
38 </LinearLayout>

主代码:

 1 public class MainActivity
 2 {  @ViewInject(android.R.id.tabhost)
 3     private FragmentTabHost mTabHost;
 4 private LayoutInflater layoutInflater;
 5 
 6 private int mImageViewArray[] = {R.drawable.home_tab1, R.drawable.home_tab2, R.drawable.home_tab3, R.drawable.home_tab4};
 7     private String mTextviewArray[] = {"首页", "圈子", "资讯","个人中心"};
 8     private Class fragmentArray[] = {Fragment1.class, Fragment2.class, Fragment3.class,Fragment4.class};
 9 
10  protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         init();
13     }
14 
15 @Override
16     protected void init() {
17 //        list=new JSONArray();
18         layoutInflater=LayoutInflater.from(this);
19         initTabHost();//初始化底部菜单
20 }
21 
22  /**
23      * 初始化底部工具栏
24      */
25     private void initTabHost() {
26         mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
27         mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
28         int count = fragmentArray.length;
29         for (int i = 0; i < count; i++) {
30             TabHost.TabSpec tabSpec = mTabHost.newTabSpec(mTextviewArray[i])
31                     .setIndicator(getTabItemView(i));
32             mTabHost.addTab(tabSpec, fragmentArray[i], null);
33             mTabHost.getTabWidget().getChildAt(i)
34                     .setBackgroundResource(R.color.white);
35         }
36         mTabHost.setCurrentTabByTag(mTextviewArray[0]);
37         mTabHost.getTabWidget().setDividerDrawable(null);
38 }
39 
40   /**
41      * 项的样式
42      * @param index 第几个
43      * @return 每一个Tab样式
44      */
45     private View getTabItemView(int index) {
46         View view = layoutInflater.inflate(R.layout.tab_home_item, null);
47         ImageView imageView = (ImageView) view.findViewById(R.id.icon);
48         imageView.setImageResource(mImageViewArray[index]);
49         TextView textView = (TextView) view.findViewById(R.id.name);
50         textView.setText(mTextviewArray[index]);
51         return view;
52     }
53 
54 
55 
56 
57 }

就ok啦!

以上是关于Fragment+FragmentTabHost组件实现常见主页面(仿微信新浪)的主要内容,如果未能解决你的问题,请参考以下文章

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

android中 Fragment+FragmentTabHost

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

FragmentTabHost + Fragment 使用小记

FragmentTabHost+Fragment搭建应用主框架

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