package com.zenglb.framework.navigation; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.MenuItem; import com.zenglb.baselib.base.BaseActivity; import com.zenglb.framework.R; import com.zenglb.framework.activity.main.AreUSleepFragmentList; import com.zenglb.framework.fragment.mainfragment.MeProfileFragment; import com.zenglb.framework.fragment.others.DemoFragment; import com.zenglb.framework.fragment.rxjava2.Rxjava2DemoFragment; /** * 本来挺好的,但是4/5 个bottom navi 的时候 不能定制样式啊,反射XX * Sadly, there isn't any way to force enable or disable this behaviour which may not work with every design. * It also doesn't allow populating the Bottom Navigation View with more than five items - as per the design spec * (it throws an IllegalArgumentException if you try to). */ public class MainActivityBottomNavi extends BaseActivity { private ViewPager viewPager; private MenuItem menuItem; private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.navigation_home: viewPager.setCurrentItem(0); setTitle("主页*"); return true; case R.id.navigation_dashboard: viewPager.setCurrentItem(1); setTitle("Webview"); return true; case R.id.navigation_notifications: viewPager.setCurrentItem(2); setTitle("消息"); return true; case R.id.navigation_set: viewPager.setCurrentItem(3); setTitle("设置"); return true; } return false; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle("Main"); } @Override protected int setLayoutId() { return R.layout.activity_main_bottom_navi; } public void initViews() { getToolbar().setNavigationIcon(null); final BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); BottomNavigationViewHelper.disableShiftMode(navigation); navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); navigation.setAccessibilityLiveRegion(BottomNavigationView.ACCESSIBILITY_LIVE_REGION_ASSERTIVE); viewPager = (ViewPager) findViewById(R.id.viewpager); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { Log.e("sss",position+" ="); } @Override public void onPageSelected(int position) { //setTitle(position), if (menuItem != null) { menuItem.setChecked(false); } else { navigation.getMenu().getItem(0).setChecked(false); } menuItem = navigation.getMenu().getItem(position); menuItem.setChecked(true); } @Override public void onPageScrollStateChanged(int state) { } }); //禁止ViewPager滑动 // viewPager.setOnTouchListener(new View.OnTouchListener() { // @Override // public boolean onTouch(View v, MotionEvent event) { // return true; // } // }); setupViewPager(viewPager); viewPager.setOffscreenPageLimit(3); //123456789--97534567 } private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(DemoFragment.newInstance("demo")); adapter.addFragment(AreUSleepFragmentList.newInstance("expired")); adapter.addFragment(Rxjava2DemoFragment.newInstance("done")); adapter.addFragment(MeProfileFragment.newInstance("MeProfile", "333")); viewPager.setAdapter(adapter); } protected boolean isShowBacking() { return false; } }