Android BottomNavigationBar 實現底部導航欄的快捷方式
阿新 • • 發佈:2019-02-07
Bottom navigation,為頂級檢視(top-level views)提供快速導航,可以快速的訪問和重新整理頂級檢視
本文提供很完善 底部導航 Frament 一步到位
首先就是新增依賴
//底部導航欄 compile 'com.ashokvarma.android:bottom-navigation-bar:2.0.4'
佈局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="jiyun_shengxiaodemo.com.myapplication.ui.activity.Main2Activity"> <FrameLayout android:id="@+id/frameLayout" android:layout_above="@+id/bottom_navigation_bar" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> <com.ashokvarma.bottomnavigation.BottomNavigationBar android:id="@+id/bottom_navigation_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true"> </com.ashokvarma.bottomnavigation.BottomNavigationBar> </RelativeLayout>Activity裡面就是這樣 public class MainActivity extends AppCompatActivity implements BottomNavigationBar.OnTabSelectedListener { @BindView(R.id.frameLayout) FrameLayout frameLayout; @BindView(R.id.bottom_navigation_bar) BottomNavigationBar bottomNavigationBar; private Fragment mFragment;//當前顯示的Fragment private BlankFragment blankFragment; private BlankFragment2 blankFragment2; private BlankFragment3 blankFragment3; private FragmentTransaction transaction; private FragmentTransaction fragmentTransaction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); ButterKnife.bind(this); //底部導航欄 initbottomNavigationBar(); //bottomNavigationBar的選中事件 bottomNavigationBar.setTabSelectedListener(this); //fragment聯動 initFragment(); } private void initFragment() { blankFragment = new BlankFragment(); blankFragment2 = new BlankFragment2(); blankFragment3 = new BlankFragment3(); transaction = getSupportFragmentManager().beginTransaction(); transaction.add(R.id.frameLayout, blankFragment) .commit(); mFragment = blankFragment; } private void initbottomNavigationBar() { bottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED); bottomNavigationBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC); bottomNavigationBar .addItem(new BottomNavigationItem(R.drawable.a1, "故事").setInactiveIcon(ContextCompat.getDrawable(this, R.drawable.aa1)))//非選中的圖片) .addItem(new BottomNavigationItem(R.drawable.b1, "親子").setInactiveIcon(ContextCompat.getDrawable(this, R.drawable.bb2))) .setFirstSelectedPosition(0) .setBarBackgroundColor("#FFFFFF")//背景顏色 .initialise(); } @Override public void onTabSelected(int position) { switch (position) { case 0: switchFragment(blankFragment); break; case 1: switchFragment(blankFragment2); break; case 2: switchFragment(blankFragment3); break; } } @Override public void onTabUnselected(int position) { } @Override public void onTabReselected(int position) { } private void switchFragment(Fragment fragment) { //判斷當前顯示的Fragment是不是切換的Fragment fragmentTransaction = getSupportFragmentManager().beginTransaction(); if (mFragment != fragment) { //判斷切換的Fragment是否已經新增過 if (!fragment.isAdded()) { //如果沒有,則先把當前的Fragment隱藏,把切換的Fragment新增上 fragmentTransaction.hide(mFragment) .add(R.id.frameLayout, fragment).commit(); } else { //如果已經新增過,則先把當前的Fragment隱藏,把切換的Fragment顯示出來 fragmentTransaction.hide(mFragment).show(fragment).commit(); } mFragment = fragment; } } @Override public void onPointerCaptureChanged(boolean hasCapture) { } }是不是很簡潔 哈哈
裡面沒有加入ViewPager
如果需要ViewPager
點選下面連結