#BottomNavigation
##使用说明
###基本用法
maven
<dependency>
<groupId>com.ashokvarma.android</groupId>
<artifactId>bottom-navigation-bar</artifactId>
<version>1.3.0</version>
<type>pom</type>
</dependency>
Gradle
compile 'com.ashokvarma.android:bottom-navigation-bar:1.3.0'
在你的Activity xml中
<com.ashokvarma.bottomnavigation.BottomNavigationBar
android:layout_gravity="bottom"
android:id="@+id/bottom_navigation_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
在你的类中
BottomNavigationBar bottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);
bottomNavigationBar
.addItem(new BottomNavigationItem(R.drawable.ic_home_white_24dp, "Home"))
.addItem(new BottomNavigationItem(R.drawable.ic_book_white_24dp, "Books"))
.addItem(new BottomNavigationItem(R.drawable.ic_music_note_white_24dp, "Music"))
.addItem(new BottomNavigationItem(R.drawable.ic_tv_white_24dp, "Movies & TV"))
.addItem(new BottomNavigationItem(R.drawable.ic_videogame_asset_white_24dp, "Games"))
.initialise();
添加 TabSelectedListener
bottomNavigationBar.setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener(){
@Override
public void onTabSelected(int position) {
}
@Override
public void onTabUnselected(int position) {
}
@Override
public void onTabReselected(int position) {
}
});
##定制化
###BottNavigationBar 定制化
- Modes
Attribute: bnbMode Values: mode_default, mode_fixed, mode_shifting
Method: setMode() Values:MODE_DEFAULT, MODE_FIXED, MODE_SHIFTING
设置Mode的代码片段:
bottomNavigationBar
.setMode(BottomNavigationBar.MODE_FIXED)
MODE_DEFAULT:如果tabs的数量少于或等于3,使用MODE_FIXED,否则使用MODE_SHIFTING
- Background Styles
Attribute: bnbBackgroundStyle Values:background_style_default, background_style_static,background_style_ripple
Method: setBackgroundStyle() Values: BACKGROUND_STYLE_DEFAULT, BACKGROUND_STYLE_STATIC, BACKGROUND_STYLE_RIPPLE
设置background style的代码片段:
bottomNavigationBar
.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_RIPPLE)
BACKGROUND_STYLE_RIPPLE: 如果模式是MODE_FIXED,那么使用BACKGROUND_STYLE_STATIC,如果模式是MODE_SHIFTING,那么使用BACKGROUND_STYLE_RIPPLE
- Colors
Attributes: bnbActiveColor, bnbInactiveColor, bnbBackgroundColor Value: Color value or resource
Methods: setActiveColor, setInActiveColor, setBarBackgroundColor Value: Color value or resource
设置颜色的代码片段:
bottomNavigationBar
.setActiveColor(R.color.primary)
.setInActiveColor("#FFFFFF")
.setBarBackgroundColor("#ECECEC")
in-active color: Tab没使用时候图标和文字的颜色
active color: 当style是BACK_GROUND_STYLE_STATIC,active color是图标和文字被选中的颜色;当style是BACK_GROUND_STYLE_RIPPLE时,active color是底部导航条的背景色
背景颜色: 当style是BACK_GROUND_STYLE_STATIC时,背景颜色是底部条的背景;当style是BACK_GROUND_STYLE_RIPPLE时,背景颜色是图标和文字被选中的颜色
默认颜色:
- active color:Theme的Primary color
- in active color: Color.LTGRAY
background color: Color.WHITE
BottomNavigationItem 颜色定制
为BottomNavigationItem设置颜色:如果需要为不同的tab设置不同的激活和非激活颜色,当然也可以设置激活和非激活颜色
代码片段:
bottomNavigationBar
.addItem(new BottomNavigationItem(R.drawable.ic_home_white_24dp, "Home").setActiveColor(R.color.orange).setInActiveColor(R.color.teal))
.addItem(new BottomNavigationItem(R.drawable.ic_book_white_24dp, "Books").setActiveColor("#FFFF00"))
.addItem(new BottomNavigationItem(R.drawable.ic_music_note_white_24dp, "Music").setInActiveColor("#00FFFF"))
.addItem(new BottomNavigationItem(R.drawable.ic_tv_white_24dp, "Movies & TV"))
.addItem(new BottomNavigationItem(R.drawable.ic_videogame_asset_white_24dp, "Games").setActiveColor(R.color.grey))
如果没有设置 bottomNavigationItem的激活和非激活颜色,则从 bottomNavigationBar 来继承。
- Elevation 高度
Attribute: bnbElevation
默认8dp, 可以设置为0dp
- BottomNavigationItem图标定制
如果Icon的激活/非激活态只是颜色不同还不能满足你,该控件还允许设置激活/非激活态的不同图标
代码片段:
new BottomNavigationItem(R.drawable.ic_home_white_24dp, “Home”).setInactiveIcon(R.drawable.ic_home_black)
##动作设置
###自动隐藏
如果控件是在Co-ordinator Layout中,默认地,当用户滑动时,自动隐藏,反方向则出现,若想关闭这个特性:
bottomNavigationBar.setAutoHideEnabled(false);
###隐藏/出现
在代码的任何地方,都可以实现BottomNavigationBar的隐藏和出现
bottomNavigationBar.hide();
bottomNavigationBar.show();
##Badges(类似微博微信的小红点)
代码片段:
BadgeItem numberBadgeItem = new BadgeItem()
.setBorderWidth(4)
.setBackgroundColorResource(R.color.blue)
.setText("5")
.setHideOnSelect(autoHide.isChecked());
bottomNavigationBar
.addItem(new BottomNavigationItem(R.drawable.ic_home_white_24dp, "Home").setActiveColorResource(R.color.orange).setBadgeItem(numberBadgeItem))
可以设置具体的动作等等。
FAB&SnackBar(Floating Action Bar和SnackBar)
都可以一起使用
FAB和BottomNavigationBar应该写在一个Coordinator Layout中
用setFab在bottomNavigationBar上连接所有的部件
代码片段:
FloatingActionButton fabHome = (FloatingActionButton) findViewById(R.id.fab_home);
BottomNavigationBar bottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bnb);
bottomNavigationBar.setFab(fabHome);