最近想弄一个双导航功能,查看了许多资料,总算是实现了功能,这边就算是给自己几个笔记吧!
先来看看效果
那么就开始实现了!
底部导航栏我选择用FragmentTabHost+Fragment来实现,这个方法我觉得挺好用的,代码量也不多
首先是开始的activity_main.xml
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context="${relativePackage}.${activityClass}" >
- <FrameLayout
- android:id="@+id/main_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_above="@+id/main_tab"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true" >
- </FrameLayout>
- <view
- android:id="@+id/main_tab"
- android:layout_width="match_parent"
- android:layout_height="50dp"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- class="android.support.v4.app.FragmentTabHost" />
- </RelativeLayout>
其中我是直接拉的view所以是形成的FragmentTabHost
也可以直接在xml文件里面写
<Android.support.v4.view.FragmentTabHost >
</android.support.v4.view.FragmentTabHost>
这xml文件就一个view加一个tab view用来显示碎片,tab用来放置底部按钮的数量
再来是tab_foot.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#F6F6F6"
- android:gravity="center"
- android:orientation="vertical" >
- <ImageView
- android:id="@+id/foot_iv"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/home1" />
- <TextView
- android:id="@+id/foot_tv"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="3dp"
- android:text="首页"
- android:textColor="@color/tab_color" />
- </LinearLayout>
显示效果。
再来是MainActivity的代码
- package com.gjn.mynavigation;
- import android.os.Bundle;
- import android.support.v4.app.FragmentActivity;
- import android.support.v4.app.FragmentTabHost;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.Window;
- import android.widget.ImageView;
- import android.widget.TabWidget;
- import android.widget.TextView;
- import android.widget.TabHost.OnTabChangeListener;
- import android.widget.TabHost.TabSpec;
- public class MainActivity extends FragmentActivity implements OnTabChangeListener {
- private FragmentTabHost mTabHost;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.activity_main);
- //初始化FragmentTabHost
- initHost();
- //初始化底部导航栏
- initTab();
- //默认选中
- mTabHost.onTabChanged(TabDb.getTabsTxt()[0]);
- }
- private void initTab() {
- String[] tabs = TabDb.getTabsTxt();
- for (int i = 0; i < tabs.length; i++) {
- //新建TabSpec