-
Notifications
You must be signed in to change notification settings - Fork 14
Home
Kongzue edited this page Aug 1, 2022
·
12 revisions
简单例子:
CityPickerDialog.build()
.show(new OnCitySelected() {
/**
* 此处为回调,
* @param text 直接返回文本,例如“陕西省西安市未央区”
* @param province 为省
* @param city 为市
* @param district 为区
*/
@Override
public void onSelect(String text, String province, String city, String district) {
}
});
更多 API:
.setTitle("Title") //设置标题
.setDefaultSelect("陕西省", "西安市", "未央区") //设置默认选中的省市区
简单例子:
DatePickerDialog.build()
.show(new OnDateSelected() {
/**
* 此处为回调,
* @param text 直接返回默认文本,例如“2021-9-25”
* @param year 年
* @param month 月
* @param day 日
*/
@Override
public void onSelect(String text, int year, int month, int day) {
}
});
更多 API:
.setTitle("Title") //设置标题
.setMinTime(1990, 5, 20) //指定最小可选日期 1990年5月20日
.setMaxTime(2030, 2, 10) //指定最大可选日期 2030年2月10日
.setDefaultSelect(defaultYear, defaultMonth, defaultDay) //设置默认选中日期
简单例子:
CalendarDialog.build()
.show(new OnDateSelected() {
/**
* 此处为回调,
* @param text 直接返回默认文本,例如“2021-9-25”
* @param year 年
* @param month 月
* @param day 日
*/
@Override
public void onSelect(String text, int year, int month, int day) {
}
});
更多 API:
.setMinTime(1990, 5, 20) //指定最小可选日期 1990年5月20日
.setMaxTime(2030, 2, 10) //指定最大可选日期 2030年2月10日
.setDefaultSelect(defaultYear, defaultMonth, defaultDay) //设置默认选中日期
.setShowLunarCalendar(true) //开启农历/节日显示
简单例子:
CalendarDialog.build()
.show(new OnMultiDateSelected() {
/**
* 此处为回调,
* @param startText 起始日期文本,例如“2021-9-25”
* @param endText 截至日期文本,例如“2021-9-26”
* @param startYear 起始日期年
* @param startMonth 起始日期月
* @param startDay 起始日期日
* @param endYear 截至日期年
* @param endMonth 截至日期月
* @param endDay 截至日期日
*/
@Override
public void onSelect(String startText, String endText, int startYear, int startMonth, int startDay, int endYear, int endMonth, int endDay) {
}
});
更多 API:
.setMinTime(1990, 5, 20) //指定最小可选日期 1990年5月20日
.setMaxTime(2030, 2, 10) //指定最大可选日期 2030年2月10日
.setDefaultSelect(defaultYear, defaultMonth, defaultDay, defaultEndYear, defaultEndMonth, defaultEndDay) //设置默认选中日期
.setMaxMultiDay(3) //设置最多选3天
简单例子:
List<ShareData> shareDataList = new ArrayList<>();
shareDataList.add(new ShareData(MainActivity.this, "QQ", R.mipmap.img_qq_ios));
shareDataList.add(new ShareData(MainActivity.this, "微信", R.mipmap.img_wechat_ios));
shareDataList.add(new ShareData(MainActivity.this, "邮件", R.mipmap.img_email_ios));
shareDataList.add(new ShareData(MainActivity.this, "待办事项", R.mipmap.img_remind_ios));
shareDataList.add(new ShareData(MainActivity.this, "微博", R.mipmap.img_weibo_ios));
shareDataList.add(new ShareData(MainActivity.this, "备忘录", R.mipmap.img_memorandum_ios));
ShareDialog.build()
.setShareDataList(shareDataList)
.show(new OnShareClick() {
/**
* 此处为回调,
* @param context 返回上下文
* @param shareData 返回点击的 ShareData 实例
* @param shareButton 返回按钮
* @param index 返回索引
* @return 为 true 时,不自动关闭对话框
*/
@Override
public boolean onClick(Context context, ShareData shareData, View shareButton, int index) {
return false;
}
});
更多 API:
.setTitle("Title") //设置标题
//ShareData
shareData.setRadius(radius) //启用强制圆角裁切(像素,基于原图像素裁切)
简单例子:
CustomWheelPickerDialog.build()
.addWheel(new String[]{"小学", "初中", "高中"}) //添加列表项
.setOnWheelChangeListener(new OnWheelChangeListener() {
/**
* 当滚轮滑动时触发
* @param picker 滑动对话框
* @param wheelIndex 当前是第几个列表项触发滑动
* @param originWheelData 原始列表项数据
* @param itemIndex 已选中数据的索引
* @param itemText 已选中数据的内容
*/
@Override
public void onWheel(CustomWheelPickerDialog picker, int wheelIndex, String[] originWheelData, int itemIndex, String itemText) {
}
})
.show(new OnCustomWheelPickerSelected() {
/**
* 当确认后,
* @param picker 滑动对话框
* @param text 返回默认文本,例如“初中 初4班 声乐组”
* @param selectedTexts 选中的每个列表项文本集合
* @param selectedIndex 选中的每个列表项索引集合
*/
@Override
public void onSelected(CustomWheelPickerDialog picker, String text, String[] selectedTexts, int[] selectedIndex) {
}
});
要完成联动,您需要自行处理多个列表项的数据变化,可以通过下述 API 完成对已添加的列表内数据的更换。
您也可以 查看样例代码(链接的代码中 onCustomWheelPicker 方法) 了解联动工作的范例。
更多 API:
.addWheel(new String[]{"语文组", "数学组", "英语组", "美术组", "音乐组"}) //添加更多的滑动项
.setDefaultSelect(0, 3) //设置第1个滑动组件默认选中第4项(请指定索引值)
.setWheel(2, new String[]{"语文组", "数学组", "英语组", "美术组", "音乐组"}) //更换第3个滑动列表为指定内容
.getWheelSelectedIndex(1) //获得第2个滑动组件选中的索引值
.getWheelSelected(1) //获得第2个滑动组件选中的内容文本
.getWheel(1) //获得第2个滑动组件的列表内容(String[])
.setTitle("Title") //设置标题
简单例子:
ReplyDialog.build()
.setTitle("回复 @Kongzue:") //设置标题
.setReplyButtonText("发送") //设置按钮文字
.setContentHint("请输入回复内容...") //设置输入内容提示
.show();
更多 API:
.setContent("内容") //设置默认输入内容文本
要使用文件选择,请在 AndroidManifest.xml 的 <Application>
标签中插入属性:
android:requestLegacyExternalStorage="true"
然后在 Activity 中添加:
FileDialog fileDialog;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (fileDialog != null) {
fileDialog.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
在申请权限时会自动处理相关业务。
选择文件简单例子:
FileDialog.build().selectFile(new FileSelectCallBack() {
@Override
public void onSelect(File file, String filePath) {
PopTip.show("选择的文件:" + filePath);
}
});
选择文件夹:
FileDialog.build().selectFolder(new FileSelectCallBack() {
@Override
public void onSelect(File file, String filePath) {
PopTip.show("选择的文件夹:" + filePath);
}
});
多选文件:
FileDialog.build().setMaxSelectionNumber(3) //设置最多选3个文件
.selectFile(new FileSelectCallBack() {
@Override
public void onMultiSelect(File[] file, String[] filePath) {
for (String path : filePath) {
Log.i(">>>", "选中的文件: " + path);
}
PopTip.show("选中了" + filePath.length + "个文件");
}
});
限定类型:
FileDialog.build().setSuffixArray(new String[]{".jpg"}) //只允许 jpg 后缀
.selectFile(new FileSelectCallBack() {
@Override
public void onSelect(File file, String filePath) {
PopTip.show("选择的文件:" + filePath);
}
});
另外也可以通过 setMimeTypes(...)
设置文件 MimeType 类型限制;
例如针对 CalendarDialog,要修改其文案,请直接在 app 中的资源 res/strings.xml 或 res/colors.xml 中创建如下对于的字段:
修改文案:
<string name="dialogx_date_picker_please_select_date">请选择日期</string>
<string name="dialogx_date_picker_ok_button">确定</string>
<string name="dialogx_date_picker_dialog_cancel">取消</string>
<string name="dialogx_date_sunday">周日</string>
<string name="dialogx_date_monday">周一</string>
<string name="dialogx_date_tuesday">周二</string>
<string name="dialogx_date_wednesday">周三</string>
<string name="dialogx_date_thursday">周四</string>
<string name="dialogx_date_friday">周五</string>
<string name="dialogx_date_saturday">周六</string>
<string name="error_dialogx_calendardialog_max_multi_select">请选择允许范围内的日期</string>
修改颜色:
<color name="dialogXCalendarToday">#EB4D3D</color>
<color name="dialogXCalendarSelected">#EB4D3D</color>
修改图标:
只需要提供与对话框资源相同名称的资源文件,直接放在 App 的 res 资源目录里即可。
其他对话框类似,多语言也可以通过复写上述 name 的资源实现。