本文主要使用V4包下的FragmentTabHost来切换Fragment,避免来回切换卡死现象。以下是主要代码:
1.底部导航布局
<android.support.v4.app.FragmentTabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/colorLine" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="49dp"
android:divider="@null" />
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
private static String[] tab_tags = {"home", "other", "mine"};
2.主要代码,R.drawable.ic_tab_home为底部按钮状态选择器,这里不列举了,HomeFragment.class等为底部按钮对应的Fragment
private void initFragments() {
mTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
mTabHost.setCurrentTab(0);
mTabHost.addTab(mTabHost.newTabSpec(tab_tags[0]).setIndicator(getIndicatorView(R.drawable.ic_tab_home,"首页")),
HomeFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec(tab_tags[1]).setIndicator(getIndicatorView(R.drawable.ic_tab_discovery,"其它")),
OtherFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec(tab_tags[2]).setIndicator(getIndicatorView(R.drawable.ic_tab_mine,"我的")),
MineFragment.class, null);
}
3.底部导航按钮
private View getIndicatorView( int drawable,String name) {
View view = getLayoutInflater().inflate(R.layout.tab_widget_item, null);
TextView tv = (TextView) view.findViewById(R.id.tv_tab);
ImageView iv = (ImageView) view.findViewById(R.id.iv_tab);
tv.setText(name);
iv.setImageResource(drawable);
return view;
}
4.底部导航按钮对应的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerInside"/>
<TextView
android:id="@+id/tv_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@drawable/tab_text_color"
android:gravity="center"
android:layout_marginTop="5dp"
android:textSize="12sp" />
</LinearLayout>