1、项目根目录加入 dependencies {
allprojects { repositories { google() jcenter() maven { url 'https://jitpack.io' } } }
2、在build.gradle加入依赖
implementation 'com.github.HelloWordFeng:BottomMenu:1.0.4'
new MiddleDialogConfig().builder(this) .setDialogStyle(DialogEnum.EDIT) .setRightCallBack(new MiddleDialogConfig.RightCallBack() { @Override public void rightBtn(String cont) { showToast("点击了左边:"+cont); } }) .setLeftCallBack(new MiddleDialogConfig.LeftCallBack() { @Override public void leftBtn(String cont) { showToast("点击了右边:" + cont); } }).show();
List<String> list = new ArrayList<>(); for (int i = 0; i < 50; i++) { list.add("选项Item" + i); } new MiddleDialogConfig().builder(this) .setDialogStyle(DialogEnum.LIST) .setDatas(list) .setItemSlidingCount(6, 0.85) .setRightCallBack(new MiddleDialogConfig.RightCallBack() { @Override public void rightBtn(String cont) { showToast("点击了左边:"); } }) .setLeftCallBack(new MiddleDialogConfig.LeftCallBack() { @Override public void leftBtn(String cont) { showToast("点击了右边:"); } }) .setItemCallBack(new MiddleDialogConfig.ItemCallBackListener() { @Override public void item(String str) { showToast("选择了:" + str); } }) .show();
new MiddleDialogConfig().builder(this) .setRightCallBack(new MiddleDialogConfig.RightCallBack() { @Override public void rightBtn(String cont) { showToast("点击了左边:"); } }) .setLeftCallBack(new MiddleDialogConfig.LeftCallBack() { @Override public void leftBtn(String cont) { showToast("点击了右边:"); } }).show();
list.clear(); list.add("发送给好友"); list.add("转载到空间相册"); list.add("群相册"); list.add("保存到手机"); list.add("提取图中文字"); list.add("收藏"); new BottomMenuFragment(this) .setContentSize(16) .setCancelTextTitle("取消") .setCancelTextSize(16) .setCancelTextColor("#454545") .setCancelTextHeight(45) .setCancelTextMarginTop(20) .setContentColor("#454545") .addMenuItems(list) .setBackgroundColor("#ebebeb") .setCancelPadding(0, 0, 0, 0) .setSizeOneShape(R.drawable.bottom_menu_mid_selector) .setTopShape(R.drawable.bottom_menu_mid_selector) .setMiddleShape(R.drawable.bottom_menu_mid_selector) .setBottomShape(R.drawable.bottom_menu_mid_selector) .setCancelShape(R.drawable.bottom_menu_mid_selector) .setOnItemClickListener(new BottomMenuFragment.OnItemClickListener() { @Override public void onItemClick(TextView menu, int position) { Toast.makeText(MainActivity.this, menu.getText().toString(), Toast.LENGTH_SHORT).show(); } }) .show();
list.clear(); for (int i = 0; i < 4; i++) { list.add("文本内容" + i); } new BottomMenuFragment(this) .setTitle("标题") .addMenuItems(list) .setOnItemClickListener(new BottomMenuFragment.OnItemClickListener() { @Override public void onItemClick(TextView menu, int position) { Toast.makeText(MainActivity.this, menu.getText().toString(), Toast.LENGTH_SHORT).show(); } }) .show();
private String appendCity; private int selectPosition; //初始化执行 DataUtils.initCityList(this); //只需点击时调用即可 appendCity = "";//置空 options.clear(); //遍历省份数据 for (int i = 0; i < DataUtils.returnJson().size(); i++) { options.add(DataUtils.returnJson().get(i).getName()); } showCityDialog(0); //执行方法 private void showCityDialog(final int selectType) { //超过几个可滑动 int size = 6; String title = null; if (options.size() < size) { size = options.size(); } if (selectType == 0) { title = "请选择省份"; } else if (selectType == 1) { title = "请选择城市"; } else if (selectType == 2) { title = "请选择区县"; } new MiddleDialogConfig().builder(this) .setTitle(title) .setDialogStyle(DialogEnum.CITY) .setDatas(options) .setItemSlidingCount(size, 0.7) .setCityLevel(selectType) .setLeftRightVis() .setItemCallBack(new MiddleDialogConfig.ItemCallBackListener() { @Override public void item(String str) { String[] cont = str.split(","); appendCity += cont[1] + "\u3000"; cityText.setText(appendCity); //int type= Integer.parseInt(cont[2]); int position = Integer.parseInt(cont[0]); if (null != options) { options.clear(); } if (selectType == 0) { for (int i = 0; i < DataUtils.returnCitys().get(position).size(); i++) { options.add(DataUtils.returnCitys().get(position).get(i)); } selectPosition = position; showCityDialog(1); } else if (selectType == 1) { for (int i = 0; i < DataUtils.returnAreas().get(selectPosition).get(position).size(); i++) { options.add(DataUtils.returnAreas().get(selectPosition).get(position).get(i)); } showCityDialog(2); } } }) .show(); }
1、BottomMenuFragment (底部样式)
| 方法名 | 描述 | 参数值【默认】 |
|---|---|---|
| addMenuItems | 数据源item选项 | (List menuItems) |
| setCancelTextTitle | 底部文字文本 | 取消 |
| setCancelTextSize | 底部文字大小 | 16sp |
| setCancelTextColor | 底部文字颜色 | (#467CD4蓝色) |
| setCancelTextHeight | 底部文字高度 | dip2px(45)) |
| setCancelTextMarginTop | 底部取消文字边距(距离顶部) | 20 |
| setCancelPadding | 底部文字整体边距 | int left, int top, int right, int bottom (20) |
| setCancelShape | 取消文字点击样式 | int resId (例如:R.drawable.bottom_menu_selector 非图片 样式shape) |
| setBackgroundColor | 底部整体背景 | (#00000000) |
| setTitle | 标题 | - |
| setTitleSize | 文字大小 | 16 |
| setTitleColor | 文字颜色 | (#ff0000 红色) |
| setContentSize | item内容文字大小 | 15sp |
| setContentColor | item内容文字颜色 | (#467CD4蓝色) |
| setLineHeight | item分割线高度 | 1dp |
| setLineColor | item分割线颜色 | (#ebebeb 灰色) |
| setSizeOneShape | 数据size为1个样式 | (例如:R.drawable.bottom_menu_selector 非图片 样式shape) |
| setTopShape | item第一个样式 | (例如:R.drawable.bottom_menu_top_selector 非图片 样式shape) |
| setMiddleShape | item中间样式 | (例如:R.drawable.bottom_menu_mid_selector 非图片 样式shape) |
| setBottomShape | item最后一个样式 | (例如:R.drawable.bottom_menu_bottom_selector 非图片 样式shape) |
2、MiddleDialogConfig (中间样式)
| 方法名 | 描述 | 参数值【默认】 |
|---|---|---|
| setDialogStyle | 弹框样式(默认BASIC) | BASIC,EDIT,LIST |
| setDatas | 数据源 | List mDatas |
| setItemSlidingCount | 超过个数列表可滑动、弹框宽度屏幕占比 | int count, double dialogWidth(0-1) |
| setIsCancel | 点击外部是否可取消 | boolean isCancel |
| setHeight | 弹框高度屏幕的百分比 | double heigh(0-1) |
| setWidth | 弹框宽度屏幕的百分比 | double width(0-1) |
| setHeightLineColor | 垂直分隔线颜色 | (默认:"#454545") |
| setWidthLineColor | 横向分隔线颜色 | (默认:"#454545") |
| setTitleVis | 是否显示标题 | boolean isVis |
| setTitleBgColor | 设置标题栏背景 | int bgColor(非图片 样式shape) |
| setTitlePadding | 设置标题边距 | int left, int top, int right, int bottom (15) |
| setContent | 设置提示的内容 | (String类型) |
| setContentBgColor | 设置内容背景 | int bgColor(非图片 样式shape) |
| setContentPadding | 设置内容边距 | int left, int top, int right, int bottom (20) |
| setContentMaxLine | 设置最大显示几行 | - |
| setLeft | 设置左侧按钮文字 | (String类型) |
| setLeftColor | 左侧按钮文字颜色 | (默认:"#454545") |
| setLeftVis | 左侧是否显示 | boolean isVis |
| setLeftCallBack | 左侧点击事件 | LeftCallBack leftBack |
| setBottomPadding | 设置底部右边边文字边距 | int left, int top, int right, int bottom (15) |
| setBackageShape | 弹框样式 | int resId(非图片 样式shape) |
| setEditHint | 输入框提示文字 | (String类型) |
| setEditHintNull | 输入框为空提示字 | (String类型) |
| setEditHintColor | 输入框为空提示字颜色 | (默认:"#828282") |
| setEditTextColor | 输入框文字颜色 | (默认:"#454545") |
| setEditBackageShape | 输入框样式 | int resId(非图片 样式shape 15dp圆角)) |
| setEditPadding | 输入框内边距 | int left, int top, int right, int bottom (15) |
| setEditMargin | 输入框距外边距 | int left, int top, int right, int bottom (15) |
| setItemCallBack | item点击事件 | ItemCallBackListener listener |
| setItemSize | item字体大小 | 15sp |
| setItemColor | item字体颜色 | (默认:"#454545") |
| setItemPadding | item字体内边距 | int left, int top, int right, int bottom (15) |
| setCityLevel | 城市等级 | 0、1、2 |
| setLeftRightVis | 取消、确认按钮 | 同时隐藏 |
| show | 显示底部弹框 | - |
注意:-为系统默认值
如果上诉属性设置均未满足需求,可自行下载源码进行修改。