前言
开始之前还是需要废话一下,因为有一些坑需要告知。首先MaterialDialog在GitHub上作者已经转型使用100% Kotlin语言编写,虽然可以在Java里调用Kotlin使用。但是个人暂时不想接触,所以依然会使用老版本的MaterialDialog。Java最后的版本是0.9.6.0版本,所以我们以这个版本为例子记录一些平时个人用到的例子。另外不需要太担心高版本无法适配,目前在Android 9.0版本依然效果良好。
作者的GitHub地址:https://github.com/afollestad/material-dialogs
使用参考博客:https://blog.csdn.net/u010904027/article/details/53535590
依赖
implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
代码例子
等待弹窗例子
/** * 等待弹窗1 */ public void waitFor1() { MaterialDialog waitForDialog = new MaterialDialog.Builder(this) .content("正在登入...") .progress(true,-1)//等待图标 true=圆形icon false=进度条 .canceledOnTouchOutside(false)//点击外部不取消对话框 .build(); waitForDialog.show(); } /** * 等待弹窗2 */ @Override public void waitFor2() { MaterialDialog waitForDialog = new MaterialDialog.Builder(this) .content("正在登入...") .progress(true,-1)//等待图标 true=圆形icon false=进度条 .cancelable(false)//不会被取消 (包括返回键和外部点击都无法取消) .build(); waitForDialog.show(); }
普通对话框例子
public void dialog() { MaterialDialog dialog = new MaterialDialog.Builder(this) .title("提示")//标题 .content("您未添加人脸识别,请点击确定录入")//内容 .icon(getResources().getDrawable(R.mipmap.ic_logo,null))//图标 .positiveText("确定") //肯定按键 .neutralText("稍后询问") //中性按键 .negativeText("取消") //否定按键 .cancelable(true) .onPositive(new MaterialDialog.SingleButtonCallback() { //监听肯定按键 @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { } }) .onNeutral(new MaterialDialog.SingleButtonCallback() { //监听中性按键 @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { } }) .onNegative(new MaterialDialog.SingleButtonCallback() { //监听否定按键 @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { } }) .onAny(new MaterialDialog.SingleButtonCallback() {//三个按键一起监听 @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { switch (which){ case POSITIVE: break; case NEUTRAL: break; case NEGATIVE: break; } //或者这样 // if (DialogAction.POSITIVE == which){ // // } } }) .build(); dialog.show(); }
单选列表对话框例子
private void singleElectionDialog(){ int [] itemId = {101,102,103,104,105}; String [] contentArray = {"一","二","三","四","五"}; MaterialDialog materialDialog = new MaterialDialog.Builder(this) .items(contentArray)//添加item内容数组 .itemsIds(itemId)//添加item的id .itemsCallback(new MaterialDialog.ListCallback() { //点击回调 @Override public void onSelection(MaterialDialog dialog, View itemView, int position, CharSequence text) { Log.e("test", "onSelection: id="+itemView.getId() ); } }) .build(); materialDialog.show(); }
效果图:
RecyclerView实现单选列表例子
MaterialDialog materialDialog = new MaterialDialog.Builder(this) .title("标题") .adapter(mRecyclerViewAdapter,new LinearLayoutManager(this)) .positiveText(R.string.cancel) .build(); materialDialog.show();
注意这里的.adapter(mRecyclerViewAdapter,new LinearLayoutManager(this)), 适配器一定是RecyclerView的,不能使用ListView,而new LinearLayoutManager(this) 其实就是RecyclerView 布局方向参数.
item点击监听,请参考RecyclerView的具体用法,直接在适配器里实现点击监听.
输入框
private static MaterialDialog tipsDialog(Context context) { MaterialDialog tipsDialog = new MaterialDialog.Builder(context) .title("进入开发模式") .input("请输入密码", "", new MaterialDialog.InputCallback() { @Override public void onInput(@NonNull MaterialDialog dialog, CharSequence input) { } }) .cancelable(false) .positiveText("确定") .negativeText("取消") .onPositive(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { L.e("输入的密码内容=" + dialog.getInputEditText().getText().toString()); if (TextUtils.isEmpty(dialog.getInputEditText().getText().toString())) { Toast.makeText(context, "您没有输入密码", Toast.LENGTH_SHORT).show(); dialog.dismiss(); dialog = null; return; } if (!dialog.getInputEditText().getText().toString().equals(PASSWORD)) { Toast.makeText(context, "密码错误", Toast.LENGTH_SHORT).show(); dialog.dismiss(); dialog = null; return; } Toast.makeText(context, "密码正确", Toast.LENGTH_SHORT).show(); dialog.dismiss(); dialog = null; } }) .onNegative(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { dialog.dismiss(); dialog = null; } }) .build(); return tipsDialog; }
最新评论