Android实现底部导航栏

bottom.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="wrap_content"
    android:paddingTop="6dp"
    android:paddingBottom="6dp"
    android:orientation="horizontal">

    <LinearLayout
        android:id="@+id/tab1"
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:gravity="center"
        android:layout_weight="1">
        <ImageView
            android:id="@+id/tab1image"
            android:src="@mipmap/tab11"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"/>
        <TextView
            android:id="@+id/tab1text"
            android:text="首页"
            android:paddingTop="4dp"
            android:textColor="#2b333b"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tab2"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1">
        <ImageView
            android:id="@+id/tab2image"
            android:src="@mipmap/tab21"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"/>
        <TextView
            android:id="@+id/tab2text"
            android:text="分类"
            android:paddingTop="4dp"
            android:textColor="#2b333b"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tab3"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1">
        <ImageView
            android:id="@+id/tab3image"
            android:src="@mipmap/tab31"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"/>
        <TextView
            android:id="@+id/tab3text"
            android:text="购物车"
            android:paddingTop="4dp"
            android:textColor="#2b333b"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tab4"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1">
        <ImageView
            android:id="@+id/tab4image"
            android:src="@mipmap/tab41"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"/>
        <TextView
            android:id="@+id/tab4text"
            android:text="我的"
            android:paddingTop="4dp"
            android:textColor="#2b333b"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>


</LinearLayout>

tab1_fragment.xml对应Tab1Fragment.java,有多少个导航就写多少个,这里只写一个,其余类似。


tab1_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="首页"/>
    
</LinearLayout>

Tab1Fragment.java

package com.lzc.androidtest.fragment;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.lzc.androidtest.R;


public class Tab1Fragment extends Fragment{
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.tab1_fragment,container,false);
        return view;
    }
}


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.lzc.bookstore.MainActivity"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical">
        <FrameLayout
            android:id="@+id/fragment_tab"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

        </FrameLayout>

    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#ededed"></LinearLayout>

    <include layout="@layout/bottom"/>

</LinearLayout>


MainActivity.java

package com.lzc.androidtest;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.lzc.androidtest.fragment.Tab1Fragment;
import com.lzc.androidtest.fragment.Tab2Fragment;
import com.lzc.androidtest.fragment.Tab3Fragment;
import com.lzc.androidtest.fragment.Tab4Fragment;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private LinearLayout tab1;
    private LinearLayout tab2;
    private LinearLayout tab3;
    private LinearLayout tab4;
    private ImageView tab1image;
    private ImageView tab2image;
    private ImageView tab3image;
    private ImageView tab4image;
    private TextView tab1text;
    private TextView tab2text;
    private TextView tab3text;
    private TextView tab4text;

    private Fragment tab1fragment = null;
    private Fragment tab2fragment = null;
    private Fragment tab3fragment = null;
    private Fragment tab4fragment = null;

    FragmentManager fragmentManager;
    FragmentTransaction transaction;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initDate();
        initEvent();
        select(0);
    }
    private void initEvent() {
        tab1.setOnClickListener(this);
        tab2.setOnClickListener(this);
        tab3.setOnClickListener(this);
        tab4.setOnClickListener(this);
    }

    private void initDate() {
        tab1 = (LinearLayout)findViewById(R.id.tab1);
        tab2 = (LinearLayout)findViewById(R.id.tab2);
        tab3 = (LinearLayout)findViewById(R.id.tab3);
        tab4 = (LinearLayout)findViewById(R.id.tab4);
        tab1image = (ImageView)findViewById(R.id.tab1image);
        tab2image = (ImageView)findViewById(R.id.tab2image);
        tab3image = (ImageView)findViewById(R.id.tab3image);
        tab4image = (ImageView)findViewById(R.id.tab4image);
        tab1text = (TextView)findViewById(R.id.tab1text);
        tab2text = (TextView)findViewById(R.id.tab2text);
        tab3text = (TextView)findViewById(R.id.tab3text);
        tab4text = (TextView)findViewById(R.id.tab4text);
    }

    private void select(int i)
    {
        fragmentManager = getSupportFragmentManager();
        transaction = fragmentManager.beginTransaction();
        hideFragment(transaction);
        clearItem();
        switch (i)
        {
            case 0:
                if(tab1fragment==null){
                    tab1fragment = new Tab1Fragment();
                    transaction.add(R.id.fragment_tab,tab1fragment);
                }else{
                    transaction.show(tab1fragment);
                }
                tab1image.setImageResource(R.mipmap.tab12);
                tab1text.setTextColor(android.graphics.Color.rgb(240,20,20));
                break;
            case 1:
                if(tab2fragment==null){
                    tab2fragment = new Tab2Fragment();
                    transaction.add(R.id.fragment_tab,tab2fragment);
                }else{
                    transaction.show(tab2fragment);
                }
                tab2image.setImageResource(R.mipmap.tab22);
                tab2text.setTextColor(android.graphics.Color.rgb(240,20,20));
                break;
            case 2:
                if(tab3fragment==null){
                    tab3fragment = new Tab3Fragment();
                    transaction.add(R.id.fragment_tab,tab3fragment);
                }else{
                    transaction.show(tab3fragment);
                }
                tab3image.setImageResource(R.mipmap.tab32);
                tab3text.setTextColor(android.graphics.Color.rgb(240,20,20));
                break;
            case 3:
                if(tab4fragment==null){
                    tab4fragment = new Tab4Fragment();
                    transaction.add(R.id.fragment_tab,tab4fragment);
                }else{
                    transaction.show(tab4fragment);
                }
                tab4image.setImageResource(R.mipmap.tab42);
                tab4text.setTextColor(android.graphics.Color.rgb(240,20,20));
                break;
        }
        transaction.commit();
    }

    private void clearItem()
    {
        tab1image.setImageResource(R.mipmap.tab11);
        tab2image.setImageResource(R.mipmap.tab21);
        tab3image.setImageResource(R.mipmap.tab31);
        tab4image.setImageResource(R.mipmap.tab41);

        tab1text.setTextColor(android.graphics.Color.rgb(43,51,59));
        tab2text.setTextColor(android.graphics.Color.rgb(43,51,59));
        tab3text.setTextColor(android.graphics.Color.rgb(43,51,59));
        tab4text.setTextColor(android.graphics.Color.rgb(43,51,59));

    }

    private void hideFragment(FragmentTransaction transaction) {
        if(tab1fragment!=null){
            transaction.hide(tab1fragment);
        }if(tab2fragment!=null){
            transaction.hide(tab2fragment);
        }if(tab3fragment!=null){
            transaction.hide(tab3fragment);
        }if (tab4fragment!=null){
            transaction.hide(tab4fragment);
        }
    }

    @Override
    public void onClick(View view) {
        switch (view.getId())
        {
            case R.id.tab1:
                select(0);
                break;
            case R.id.tab2:
                select(1);
                break;
            case R.id.tab3:
                select(2);
                break;
            case R.id.tab4:
                select(3);
                break;
        }
    }
}

效果图





猜你喜欢

转载自blog.csdn.net/lizc_lizc/article/details/79706443