与天地兮比寿,与日月兮齐光。这篇文章主要讲述Android编程入门--BottomNavigationView+ViewPager相关的知识,希望能为你提供帮助。
参考博客:Android (争取做到)最全的底部导航栏实现方法
Bottom Navigation是5.0(API level 21)新出的一种符合MD规范的导航栏规范。
规范参考:Android Bottom navigation 规范一:使用方法
3个比较火的开源库,GitHub - aurelhubert/ahbottomnavigation,GitHub - roughike/BottomBar, Ashok-Varma/BottomNavigation
ashokvarma 参考博客:Android学习之BottomNavigationBar实现Android特色底部导航栏
或参考博客:Android底部导航BottomNavigationBar
BottomNavigationView+ViewPager+Fragment布局方式
ViewPagerAdapter:
package com.zyp.energy.adapter; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.ArrayList; import java.util.List; public class ViewPagerAdapter extends FragmentPagerAdapter {private final List< Fragment> mFragmentList = new ArrayList< > (); public ViewPagerAdapter(FragmentManager manager) { super(manager); }@Override public Fragment getItem(int position) { return mFragmentList.get(position); }@Override public int getCount() { return mFragmentList.size(); }public void addFragment(Fragment fragment) { mFragmentList.add(fragment); }}
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(HomeFragment.newInstance()); adapter.addFragment(NotifyFragment.newInstance()); adapter.addFragment(SettingFragment.newInstance()); mViewPager.setAdapter(adapter);
布局:
< ?xml version="1.0" encoding="utf-8"?> < android.support.constraint.ConstraintLayout 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" android:background="@color/activity_background" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.zyp.energy.ui.activity.MainActivity" tools:showIn="@layout/activity_main"> < android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /> < /android.support.constraint.ConstraintLayout>
< include layout="@layout/content_main" /> < android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:background="?android:attr/windowBackground" app:menu="@menu/navigation" />
事件代码:
private ViewPager.OnPageChangeListener mOnPageChangeListener = new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Override public void onPageSelected(int position) { if (menuItem != null) { menuItem.setChecked(false); } else { mNavigationView.getMenu().getItem(0).setChecked(false); } menuItem = mNavigationView.getMenu().getItem(position); menuItem.setChecked(true); }@Override public void onPageScrollStateChanged(int state) { } }; private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() {@Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.navigation_home: mViewPager.setCurrentItem(0); return true; case R.id.navigation_notifications: mViewPager.setCurrentItem(1); return true; case R.id.navigation_setting: mViewPager.setCurrentItem(2); return true; } return false; }};
【Android编程入门--BottomNavigationView+ViewPager】
推荐阅读
- Android编程入门--开源框架Gson
- Android编程入门--简单闪屏界面
- Android编程入门--开源框架OKHttp
- Android编程入门--RecyclerView使用
- Android编程入门--开源框架EventBus
- Android编程入门--自定义Application
- android防反编译技术初体验——混淆
- AutoMapperExtension
- Android编程入门--底部Dialog弹窗