Reference Blog: Android (strive to do) the most complete bottom navigation bar implementation method
Bottom Navigation is a new MD-compliant navigation bar specification for 5.0 (API level 21).
Specification Reference: Android Bottom navigation Specification One: how to use
3 more Fire open source libraries, Github-aurelhubert/ahbottomnavigation,github-roughike/bottombar, ashok-varma/bottomnavigation
Ashokvarma Reference Blog: Android Learning Bottomnavigationbar implementation Android featured bottom navigation bar
or reference blog: Android Bottom navigation Bottomnavigationbar
Bottomnavigationview+viewpager+fragment Layout method
Viewpageradapter:
PackageCom.zyp.energy.adapter;Importandroid.support.v4.app.Fragment;ImportAndroid.support.v4.app.FragmentManager;ImportAndroid.support.v4.app.FragmentPagerAdapter;Importjava.util.ArrayList;Importjava.util.List; Public classViewpageradapterextendsFragmentpageradapter {Private FinalList<fragment> mfragmentlist =NewArraylist<>(); PublicViewpageradapter (Fragmentmanager manager) {Super(manager); } @Override PublicFragment GetItem (intposition) { returnMfragmentlist.get (position); } @Override Public intGetCount () {returnmfragmentlist.size (); } Public voidaddfragment (Fragment Fragment) {mfragmentlist.add (Fragment); }}
New Viewpageradapter (Getsupportfragmentmanager ()); Adapter.addfragment (Homefragment.newinstance ()); Adapter.addfragment (Notifyfragment.newinstance ()); Adapter.addfragment (Settingfragment.newinstance ()); Mviewpager.setadapter (adapter);
Layout:
<?XML version= "1.0" encoding= "Utf-8"?><Android.support.constraint.ConstraintLayoutxmlns: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.ViewPagerAndroid:id= "@+id/viewpager"Android:layout_width= "Match_parent"Android:layout_height= "Match_parent" /></Android.support.constraint.ConstraintLayout>
<includeLayout= "@layout/content_main" /> <Android.support.design.widget.BottomNavigationViewAndroid: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" />
Event code:
PrivateViewpager.onpagechangelistener Monpagechangelistener =NewViewpager.onpagechangelistener () {@Override Public voidOnpagescrolled (intPositionfloatPositionoffset,intpositionoffsetpixels) {} @Override Public voidOnpageselected (intposition) { if(MenuItem! =NULL) {menuitem.setchecked (false); } Else{Mnavigationview.getmenu (). GetItem (0). setchecked (false); } MenuItem=Mnavigationview.getmenu (). GetItem (position); Menuitem.setchecked (true); } @Override Public voidOnpagescrollstatechanged (intState ) { } }; PrivateBottomnavigationview.onnavigationitemselectedlistener Monnavigationitemselectedlistener=NewBottomnavigationview.onnavigationitemselectedlistener () {@Override Public Booleanonnavigationitemselected (@NonNull MenuItem item) {Switch(Item.getitemid ()) { CaseR.id.navigation_home:mviewpager.setcurrentitem (0); return true; CaseR.id.navigation_notifications:mviewpager.setcurrentitem (1); return true; CaseR.id.navigation_setting:mviewpager.setcurrentitem (2); return true; } return false; } };
Getting Started with Android programming--bottomnavigationview+viewpager