简介
最近项目需要一个底部菜单栏的翻页功能,类似微信点击"+"弹出的菜单列表,想着以后可能还会在其他的地方用到,于是将其抽出来做成一个单独的功能,方便后续引用开发,具体实现请参照:
[自定义底部翻页菜单栏]https://github.com/zhengjh3/BottomMenuView.git
功能预览
- ViewPager + GridView 实现的仿微信底部菜单栏自定义View,使用简单
- 支持分页,支持设置每页的横排和竖排菜单数量
- 支持自定义翻页的指示器样式
BottomMenuView
使用方法示例:
1、项目build.gradle中配置jitpack:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2、添加版本依赖(版本后续可能有更新):
dependencies {
implementation 'com.github.zhengjh3:BottomMenuView:1.0.0'
}
3、在布局中加入BottomMenuView:
<com.zheng.bottommenus.view.BottomMenusView
android:id="@+id/view_bottom_menus"
android:layout_width="match_parent"
android:layout_height="260dp"
app:page_menu_rows="2"
app:page_menu_columns="4"
app:menu_icon_width="66dp"
app:menu_icon_height="66dp"
app:menu_text_size="11sp"
app:menu_text_color="@android:color/holo_red_light"
app:indicator_select="@drawable/circle_indicator_select"
app:indicator_unselect="@drawable/circle_indicator_unselect"
app:layout_constraintBottom_toBottomOf="parent"/>
4、在代码中构造菜单数据,设置监听事件:
public void initBottomMenus() {
bottomMenusView = findViewById(R.id.view_bottom_menus);
List<Menu> listMenu = new ArrayList<>();
listMenu.add(new Menu("路飞", R.drawable.lufei));
listMenu.add(new Menu("罗宾", R.drawable.luobin));
listMenu.add(new Menu("索隆", R.drawable.suolong));
listMenu.add(new Menu("布鲁克", R.drawable.buluke));
listMenu.add(new Menu("雷利", R.drawable.leili));
listMenu.add(new Menu("萨波", R.drawable.sabo));
listMenu.add(new Menu("路飞", R.drawable.lufei));
listMenu.add(new Menu("罗宾", R.drawable.luobin));
listMenu.add(new Menu("索隆", R.drawable.suolong));
listMenu.add(new Menu("布鲁克", R.drawable.buluke));
listMenu.add(new Menu("雷利", R.drawable.leili));
listMenu.add(new Menu("萨波", R.drawable.sabo));
bottomMenusView.setDatas(listMenu);
bottomMenusView.setOnMenuListener(new BottomMenusView.OnMenuListener() {
@Override
public void onClickMenu(Menu menu) {
Toast.makeText(MainActivity.this, "点击" + menu.getName(), Toast.LENGTH_SHORT).show();
}
@Override
public void onLongClickMenu(Menu menu) {
Toast.makeText(MainActivity.this, "长按" + menu.getName(), Toast.LENGTH_SHORT).show();
}
});
}
5、效果图:
属性说明:
在布局中可使用如下属性,也可不指定使用默认样式:
<declare-styleable name ="BottomMenusView">
<!--指示器选中, 默认黑色圆点 -->
<attr name="indicator_select" format="reference" />
<!--指示器未选中, 默认浅灰色圆点 -->
<attr name="indicator_unselect" format="reference" />
<!--每页菜单行数, 默认2行 -->
<attr name="page_menu_rows" format="integer" />
<!--每页菜单列数,默认4列-->
<attr name="page_menu_columns" format="integer" />
<!--菜单字体大小, 默认14sp -->
<attr name="menu_text_size" format="dimension" />
<!--菜单字体颜色,默认黑色-->
<attr name="menu_text_color" format="color" />
<!--菜单icon宽度,默认64dp-->
<attr name="menu_icon_width" format="dimension" />
<!--菜单icon高度,默认64dp-->
<attr name="menu_icon_height" format="dimension" />
</declare-styleable>