9
BottomNavigationView+ViewPager+Fragment
source link: https://renyugang.blog.csdn.net/article/details/81636279
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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设置掉即可。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK