1.创建一个android studio工程并依赖最新的Design Support Library(25) 在app的build.gradle中:
compile
'com.android.support:design:25.2.0'
2.为MainActivity创建如下布局:
< RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android"xmlns: tools = "http://schemas.android.com/tools"android :layout_width= "match_parent"android :layout_height= "match_parent"android :background= "@android:color/background_light"xmlns: app = "http://schemas.android.com/apk/res-auto"tools :context= ".MainActivity" >
< android.support.v4.view.ViewPagerandroid :id= "@+id/viewpager"android :layout_width= "match_parent"android :layout_height= "match_parent"android :layout_above= "@+id/btnv_buttom" />
< android.support.design.widget.BottomNavigationViewandroid :id= "@+id/btnv_buttom"android :layout_width= "match_parent"android :layout_height= "65dp"app :menu= "@menu/menu_main"android :layout_alignParentBottom= "true">
</ android.support.design.widget.BottomNavigationView >
</ RelativeLayout >
app:itemBackground:设置item的背景,对应setItemBackgroundResource(int resId)方法 app:itemIconTintUsed:设置icon的颜色,对应setItemIconTintList(ColorStateList tint)方法 app:itemTextColor:设置文字的颜色,对应setIteTextColor(ColorStateList textColor)方法
链接:http://www.jianshu.com/p/46c629841803
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
3.
MainAdapter
public class MainAdapter extends FragmentPagerAdapter {private final List<Fragment> mFragmentList = new ArrayList<>();
public MainAdapter(FragmentManager manager) {super (manager);}@Overridepublic Fragment getItem( int position) {return mFragmentList .get(position);}
@Overridepublic int getCount() {return mFragmentList .size();}
public void addFragment(Fragment fragment) {mFragmentList .add(fragment);}
}
5.
MainAdapter
设置OnPageChangeListener,本文
重要代码在此
,当ViewPagerAdapter滑动fragment的时候BottomNavigationView的选中状态也跟着变化
bottomNavigationView
.setOnNavigationItemSelectedListener(
new
BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean
onNavigationItemSelected(
@NonNull
MenuItem item) {
switch
(item.getItemId()) {
case
R.id.
home
:
viewpager
.setCurrentItem(
0
);
break
;
case
R.id.
favorite
:
viewpager
.setCurrentItem(
1
);
break
;
case
R.id.
me
:
viewpager
.setCurrentItem(
2
);
break
;
}
return false
;
}
});
viewpager
.addOnPageChangeListener(
new
ViewPager.OnPageChangeListener() {
@Override
public void
onPageScrolled(
int
position,
float
positionOffset,
int
positionOffsetPixels) {
}
@Override
public void
onPageSelected(
int
position) {
if
(
prevMenuItem
!=
null
) {
prevMenuItem
.setChecked(
false
);
}
else
{
bottomNavigationView
.getMenu().getItem(
0
).setChecked(
false
);
}
bottomNavigationView
.getMenu().getItem(position).setChecked(
true
);
prevMenuItem
=
bottomNavigationView
.getMenu().getItem(position);
}
@Override
public void
onPageScrollStateChanged(
int
state) {
}
});
MainAdapter mainAdapter=
new
MainAdapter(getSupportFragmentManager());
mainAdapter.addFragment(
new
FindFragment());
mainAdapter.addFragment(
new
SexyFragment());
mainAdapter.addFragment(
new
ReleaseFragment());
viewpager
.setAdapter(mainAdapter);
6.如果底部的按钮大于3个以上是出现问题,这需要用反射来制作。有需求,请参考以下的