1. 程式人生 > >底部導航欄BottomNavigationBar結合fragment的使用

底部導航欄BottomNavigationBar結合fragment的使用


package com.example.ztz.bottomnavigationbar;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.widget.FrameLayout;

import com.ashokvarma.bottomnavigation.BadgeItem
; import com.ashokvarma.bottomnavigation.BottomNavigationBar; import com.ashokvarma.bottomnavigation.BottomNavigationItem; import com.example.ztz.bottomnavigationbar.fragment.ClassificationFragment; import com.example.ztz.bottomnavigationbar.fragment.FindFragment; import com.example.ztz.bottomnavigationbar.fragment.HomeFragment
; import com.example.ztz.bottomnavigationbar.fragment.MineFragment; import com.example.ztz.bottomnavigationbar.fragment.ShopCartFragment; import butterknife.BindView; import butterknife.ButterKnife; /** * BottomNavigationBar最新版本(2.0.4)沒有BadgeItem方法,不知道為什麼 * * BottomNavigationBar實現底部導航 */ public class
MainActivity extends AppCompatActivity implements BottomNavigationBar.OnTabSelectedListener { @BindView(R.id.frameLayout) FrameLayout frameLayout; @BindView(R.id.bottom_navigation_bar) BottomNavigationBar bottomNavigationBar; private FragmentTransaction transaction; private ClassificationFragment classificationFragment; private HomeFragment homeFragment; private FindFragment findFragment; private ShopCartFragment shopCartFragment; private MineFragment mineFragment; private Fragment mFragment;//當前顯示的Fragment @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); //底部導航欄 BottomNavigationBar(); //bottomNavigationBar的選中事件 bottomNavigationBar.setTabSelectedListener(this); //fragment聯動 initFragment(); } private void initFragment() { homeFragment = new HomeFragment(); classificationFragment = new ClassificationFragment(); findFragment = new FindFragment(); shopCartFragment = new ShopCartFragment(); mineFragment = new MineFragment(); transaction = getSupportFragmentManager().beginTransaction(); transaction.add(R.id.frameLayout, homeFragment) .commit(); mFragment = homeFragment; } private void BottomNavigationBar() { //按鈕右上角紅點 BadgeItem badgeItem = new BadgeItem(); badgeItem.setHideOnSelect(false) .setText("10") .setBackgroundColorResource(R.color.red) .setBorderWidth(0); bottomNavigationBar.setActiveColor(R.color.colorAccent)//設定Item選中顏色方法 .setInActiveColor(R.color.colorPrimary)//設定Item未選中顏色方法 .setBarBackgroundColor("#FFFFFF");//背景顏色 bottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);//按鈕的樣式 //背景樣式 bottomNavigationBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC); bottomNavigationBar.addItem(new BottomNavigationItem(R.drawable.shouye,"首頁").setBadgeItem(badgeItem)) .addItem(new BottomNavigationItem(R.drawable.fenlei,"分類")) .addItem(new BottomNavigationItem(R.drawable.faxian,"發現")) .addItem(new BottomNavigationItem(R.drawable.gouwuche,"購物車")) .addItem(new BottomNavigationItem(R.drawable.mine,"我的")) .setFirstSelectedPosition(0)//預設選中頁面 .initialise(); } @Override public void onTabSelected(int position) { switch (position){ case 0: switchFragment(homeFragment); break; case 1: switchFragment(classificationFragment); break; case 2: switchFragment(findFragment); break; case 3: switchFragment(shopCartFragment); break; case 4: switchFragment(mineFragment); break; } } @Override public void onTabUnselected(int position) {} @Override public void onTabReselected(int position) {} private void switchFragment(Fragment fragment) { //判斷當前顯示的Fragment是不是切換的Fragment if(mFragment != fragment) { //判斷切換的Fragment是否已經新增過 if (!fragment.isAdded()) { //如果沒有,則先把當前的Fragment隱藏,把切換的Fragment新增上 getSupportFragmentManager().beginTransaction().hide(mFragment) .add(R.id.frameLayout,fragment).commit(); } else { //如果已經新增過,則先把當前的Fragment隱藏,把切換的Fragment顯示出來 getSupportFragmentManager().beginTransaction().hide(mFragment).show(fragment).commit(); } mFragment = fragment; } } }