版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011133213/article/details/81636279
BottomNavigationView+ViewPager+Fragment
package com.shop.pet;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView mTextMessage;
private ViewPager mViewPager;
private MenuItem mMenuItem;
private BottomNavigationView navigation;
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_pet:
mViewPager.setCurrentItem(1);
return true;
case R.id.navigation_find:
mViewPager.setCurrentItem(2);
return true;
case R.id.navigation_message:
mViewPager.setCurrentItem(3);
return true;
case R.id.navigation_my:
mViewPager.setCurrentItem(4);
return true;
}
return false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mViewPager = (ViewPager) findViewById(R.id.viewpager);
navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setLabelVisibilityMode(1);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
setupViewPager(mViewPager);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(R.id.f_home, BaseFragment.newInstance(0));
adapter.addFragment(R.id.f_pet, BaseFragment.newInstance(1));
adapter.addFragment(R.id.f_find, BaseFragment.newInstance(2));
adapter.addFragment(R.id.f_message, BaseFragment.newInstance(3));
adapter.addFragment(R.id.f_my, BaseFragment.newInstance(4));
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (mMenuItem != null) {
mMenuItem.setChecked(false);
} else {
navigation.getMenu().getItem(0).setChecked(false);
}
mMenuItem = navigation.getMenu().getItem(position);
mMenuItem.setChecked(true);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
}
一些网友可能会遇到BottomNavigationView的Item项超过3时,不能完全显示文字,从代码中可以看到如下部分
private boolean isShifting(int labelVisibilityMode, int childCount) {
return labelVisibilityMode == -1 ? childCount > 3 : labelVisibilityMode == 0;
}
所以代码中将labelVisibilityMode设置掉即可。