一、前言:
一个增强BottomNavigationView的安卓库。
功能
methods | description |
---|---|
enableAnimation | 开启或关闭点击动画(文字放大效果和图片移动效果)。 默认为 true. |
enableItemShiftingMode | 开始或关闭子菜单位移模式。 如果为 true,除了当前选中项,其他项的文本将会隐藏。 当菜单数大于3时,默认为 true。 |
enableShiftingMode | 开始或关闭导航条位移模式。如果为 true,选中项和其他项的宽度不一样。当菜单数大于3时,默认为 true。 |
getBottomNavigationItemView | 获取位于 position 的私有成员变量 mButton。 |
getBottomNavigationItemViews | 获取私有成员变量 mButtons。 |
getCurrentItem | 获取当前选中项的索引。 |
getIconAt | 获取位于 position 的图片。 |
getItemCount | 获取子项个数。 |
getItemHeight | 获取菜单高度。 |
getLargeLabelAt | 获取位于 position 的大标签. 每个子项包含两个标签,一个大的,一个小的。 |
getSmallLabelAt | 获取位于 position 的小标签. 每个子项包含两个标签,一个大的,一个小的。 |
getMenuItemPosition | 获取子菜单的索引。如果找不到,返回 -1。 |
getOnNavigationItemSelectedListener | 获取 OnNavigationItemSelectedListener。 |
setCurrentItem | 设置当前选中项。 |
setIconMarginTop | 设置 icon 的 MarginTop,用于调节图标垂直位置。 |
setIconSize | 设置所有的子项图标大小。 |
setIconSizeAt | 设置位于 position 的图标的大小。 |
setIconsMarginTop | 设置所有 icon 的 MarginTop,用于调节图标垂直位置。 |
setIconTintList | 设置图片的渲染颜色列表(Selector) |
setIconVisibility | 设置图片可见性。 |
setItemBackground | 设置子项的背景。 |
setItemHeight | 设置子项高度。 |
setLargeTextSize | 设置所有子项的大标签文本大小。每个子项有两个标签,一个大的,一个小的。当子项未选中时,显示小标签;选中时,显示大标签。 |
setSmallTextSize | 设置所有子项的小标签文本大小。每个子项有两个标签,一个大的,一个小的。当子项未选中时,显示小标签;选中时,显示大标签。 |
setTextSize | 设置所有子项的大和小标签文本大小。 |
setTextTintList | 设置子项 TextView 的颜色。 |
setTextVisibility | 设置文本可见性。 |
setTypeface | 设置所有子项的 TextView 字体 |
setupWithViewPager | 和 ViewPager 绑定,当 任何一个选中项改变时,都会自动改变另一项。 |
二、使用:
1、依赖
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
maven { url "https://maven.google.com" }
}
}
//底部导航依赖
implementation 'com.github.ittianyu:BottomNavigationViewEx:2.0.4'
//红点依赖
implementation 'q.rorbin:badgeview:1.1.0'
2、在 xml 布局中添加自定义控件:
<com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
android:id="@+id/bnve"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/colorPrimary"
app:itemIconTint="@color/selector_item_color"
app:itemTextColor="@color/selector_item_color"
app:menu="@menu/menu_navigation_with_view_pager" />
3、在 Activity 中绑定控件:
BottomNavigationViewEx bnve = (BottomNavigationViewEx) findViewById(R.id.bnve);
4、禁止所有动画效果
bnve.enableAnimation(false);
bnve.enableShiftingMode(false);
bnve.enableItemShiftingMode(false);
5、自定义图标和文本大小
bnve.setIconSize(widthDp, heightDp);
bnve.setTextSize(sp);
6、和 ViewPager 绑定####
// set adapter
adapter = new VpAdapter(getSupportFragmentManager(), fragments);
bind.vp.setAdapter(adapter);
// binding with ViewPager
bind.bnve.setupWithViewPager(bind.vp);
7、添加带数字的小红点
Gradle 中加入 badge 库的依赖
compile 'q.rorbin:badgeview:1.1.0'
和底部控件绑定
// add badge
addBadgeAt(2, 1);
private Badge addBadgeAt(int position, int number) {
// add badge
return new QBadgeView(this)
.setBadgeNumber(number)
.setGravityOffset(12, 2, true)
.bindTarget(bind.bnve.getBottomNavigationItemView(position))
.setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() {
@Override
public void onDragStateChanged(int dragState, Badge badge, View targetView) {
if (Badge.OnDragStateChangedListener.STATE_SUCCEED == dragState)
Toast.makeText(BadgeViewActivity.this, R.string.tips_badge_removed, Toast.LENGTH_SHORT).show();
}
});
}
7、混淆
-keep public class com.google.android.material.bottomnavigation.BottomNavigationView { *; }
-keep public class com.google.android.material.bottomnavigation.BottomNavigationMenuView { *; }
-keep public class com.google.android.material.bottomnavigation.BottomNavigationPresenter { *; }
-keep public class com.google.android.material.bottomnavigation.BottomNavigationItemView { *; }
gitHub地址:https://gitee.com/luoyanyong/BottomNavigationViewEx-master
网友评论