如何使用你自己的弹窗 - ZWeijian/FormView GitHub Wiki
如何使用你自己的弹窗
- 设置菜单监听器setOnMenuListener
- 在对应的回调函数使用你自己的弹窗,最后返回false,表示不使用默认弹窗
比如我想使用自己的列弹窗,那么我应该在onColumnMenu函数中使用自己的弹窗,然后返回false。
* 用户点击列按钮,需要打开列菜单
* 建议打开弹窗前,选中目标列 mFormView.selectColumn(rowPos, columnPos, true);
* 关闭弹窗后,取消选中目标列 mFormView.selectColumn(rowPos, columnPos, false);
*
* @param box 目标单元格的数据
* @param rowPos 目标单元格的行号
* @param columnPos 目标单元格的列号
* @param totalColumnNum 可见列数
* @param menu 推荐的菜单选项
* @return true:使用自带的默认弹窗 false:使用你自己的弹窗
*/
@Override
public boolean onColumnMenu(Box box, final int rowPos, final int columnPos, final int totalColumnNum, String[] menu) {
//推荐打开弹窗前,选中目标列
mFormView.selectColumn(rowPos, columnPos, true);
//创建并打开你自己的弹窗MenuDialog
MenuDialog menuDialog = new MenuDialog(FormActivity.this, menu, new MenuDialog.OnMenuListener() {
@Override
public void onSelect(String text, int pos) {
//推荐关闭弹窗后,取消选中目标列
mFormView.selectColumn(rowPos, columnPos, false);
switch (text) {
case "增加一列":
mFormView.addColumn(columnPos + 1, 1);
break;
case "删除此列":
mFormView.deleteColumn(rowPos, columnPos);
break;
case "最右增加一列":
mFormView.addColumn(totalColumnNum, 1);
break;
case "最右减少一列":
mFormView.deleteColumnAtTheEnd(1);
break;
default:
}
}
@Override
public void onCancel() {
//推荐关闭弹窗后,取消选中目标列
mFormView.selectColumn(rowPos, columnPos, false);
}
});
menuDialog.show();
//return true 使用自带的默认弹窗
//return false 使用你自己的弹窗
return true;
}
完整的例子
mFormView.setOnMenuListener(new OnMenuListener() {
/**
* 用户长按单元格,需要打开单元格菜单
*
* @param box 选中单元格的数据
* @param rowPos 选中单元格的行号
* @param columnPos 选中单元格的列号
* @param menu 推荐的菜单选项
* @return true:使用自带的默认弹窗 false:使用你自己的弹窗
*/
@Override
public boolean onBoxMenu(Box box, final int rowPos, final int columnPos, String[] menu) {
//创建并打开你自己的弹窗
MenuDialog menuDialog = new MenuDialog(FormActivity.this, menu, new MenuDialog.OnMenuListener() {
@Override
public void onSelect(String text, int pos) {
switch (text) {
case "调整宽度权重":
mFormView.setBoxWeight(rowPos, columnPos, 3);
break;
case "合并右单元格":
mFormView.mergeRightBox(rowPos, columnPos, true);
break;
case "拆分单元格":
mFormView.splitBox( rowPos, columnPos);
break;
case "文字加粗":
mFormView.setBoxBold(rowPos, columnPos, true);
break;
case "取消加粗":
mFormView.setBoxBold(rowPos, columnPos, false);
break;
default:
}
}
@Override
public void onCancel() {
}
});
menuDialog.show();
//return true 使用自带的默认弹窗
//return false 使用你自己的弹窗
return true;
}
/**
* 用户点击列按钮,需要打开列菜单
* 建议打开弹窗前,选中目标列 mFormView.selectColumn(rowPos, columnPos, true);
* 关闭弹窗后,取消选中目标列 mFormView.selectColumn(rowPos, columnPos, false);
*
* @param box 目标单元格的数据
* @param rowPos 目标单元格的行号
* @param columnPos 目标单元格的列号
* @param totalColumnNum 可见列数
* @param menu 推荐的菜单选项
* @return true:使用自带的默认弹窗 false:使用你自己的弹窗
*/
@Override
public boolean onColumnMenu(Box box, final int rowPos, final int columnPos, final int totalColumnNum, String[] menu) {
//打开弹窗前,选中目标列
mFormView.selectColumn(rowPos, columnPos, true);
//创建并打开你自己的弹窗
MenuDialog menuDialog = new MenuDialog(FormActivity.this, menu, new MenuDialog.OnMenuListener() {
@Override
public void onSelect(String text, int pos) {
//关闭弹窗后,取消选中目标列
mFormView.selectColumn(rowPos, columnPos, false);
switch (text) {
case "增加一列":
mFormView.addColumn(columnPos + 1, 1);
break;
case "删除此列":
mFormView.deleteColumn(rowPos, columnPos);
break;
case "最右增加一列":
mFormView.addColumn(totalColumnNum, 1);
break;
case "最右减少一列":
mFormView.deleteColumnAtTheEnd(1);
break;
default:
}
}
@Override
public void onCancel() {
//关闭弹窗后,取消选中目标列
mFormView.selectColumn(rowPos, columnPos, false);
}
});
menuDialog.show();
//return true 使用自带的默认弹窗
//return false 使用你自己的弹窗
return true;
}
/**
* 用户点击行按钮,需要打开行菜单
* 建议打开弹窗前,选中目标行 mFormView.selectRow(rowPos, true);
* 关闭弹窗后,取消选中目标行 mFormView.selectRow(rowPos, false);
*
* @param box 目标单元格的数据
* @param rowPos 目标单元格的行号
* @param columnPos 目标单元格的列号
* @param totalRowNum 总行数
* @param menu 推荐的菜单选项
* @return true:使用自带的默认弹窗 false:使用你自己的弹窗
*/
@Override
public boolean onRowMenu(Box box, final int rowPos, int columnPos, int totalRowNum, String[] menu) {
//打开弹窗前,选中目标行
mFormView.selectRow(rowPos, true);
//创建并打开你自己的弹窗
MenuDialog menuDialog = new MenuDialog(FormActivity.this, menu, new MenuDialog.OnMenuListener() {
@Override
public void onSelect(String text, int pos) {
//关闭弹窗后,取消选中目标行
mFormView.selectRow(rowPos, false);
switch (text) {
case "增加一行":
mFormView.addRow(rowPos + 1);
break;
case "最下增加一行":
mFormView.addRowAtTheEnd();
break;
case "删除此行":
mFormView.deleteRow(rowPos);
break;
case "平分此行":
mFormView.equalRow(rowPos);
break;
case "重置此行":
mFormView.resetRow(rowPos);
break;
default:
}
}
@Override
public void onCancel() {
//关闭弹窗后,取消选中目标行
mFormView.selectRow(rowPos, false);
}
});
menuDialog.show();
//return true 使用自带的默认弹窗
//return false 使用你自己的弹窗
return true;
}
});