不断学习,做更好的自己!💪

简介

qmui 提供了一系列常用的对话框,解决了使用系统默认对话框时在不同 Android 版本上的表现不一致的问题。使用不同的 Builder 来构建不同类型的对话框,这些 Builder 都拥有设置 title 和添加底部按钮的功能,不同的 Builder 特有的作用如下:
MessageDialogBuilder: 消息类型的对话框 Builder。通过它可以生成一个带标题、文本消息、按钮的对话框。
ConfirmMessageDialogBuilder: 带 Checkbox 的消息确认框 Builder。
EditTextDialogBuilder: 带输入框的对话框 Builder。
MenuDialogBuilder: 菜单对话框 Builder。
CheckableDialogBuilder: 单选类型的对话框 Builder。
MultiCheckableDialogBuilder: 多选类型的对话框 Builder。
CustomDialogBuilder: 自定义对话框内容区域的 Builder。
AutoResizeDialogBuilder: 随键盘升降自动调整 Dialog 高度的 Builder。

开始使用

qmui

  1. 引入库
    请确保配置了 JCenter 仓库源,然后直接引用:
    implementation ​​"com.qmuiteam:qmui:2.0.0-alpha10"​​ 至此,QMUI 已被引入项目中。
  2. 配置主题
    把项目的 theme 的 parent 指向 QMUI.Compat,至此,QMUI 可以正常工作。
    ​<style name="Theme.QMUIDemo" parent="QMUI.Compat.NoActionBar"></style>​

效果图

【Kevin Learn QMUI】-->QMUIDialog_输入框

核心代码

public class DialogActivity extends BaseActivity {
@BindView(R.id.topbar)
QMUITopBar mTopBar;

@BindView(R.id.rv_dialog)
RecyclerView mRecyclerView;

private DialogAdapter mAdapter;

@Override
protected int getLayoutId() {
return R.layout.activity_dialog;
}

@Override
protected void initView() {
mTopBar.setTitle("对话框");
mTopBar.addLeftBackImageButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});

initData();

LinearLayoutManager manager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(manager);
mRecyclerView.addItemDecoration(new MyItemDecoration());
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemChildClickListener(new OnItemChildClickListener() {
@Override
public void onItemChildClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
switch (position) {
case 0:
showMsgDialog("这是标题","确定要删除该项吗?");
break;
case 1:
showMenuDialog();
break;
case 2:
showCheckboxDialog();
break;

case 3:
showSingleDialog();
break;

case 4:
showMultiDialog();
break;

case 5:
showInputDialog();
break;

case 6:
showAutoDialog();
break;

default:
break;
}

}
});


}

private void showAutoDialog() {
AutoKeyboardDialogBuilder builder = new AutoKeyboardDialogBuilder(this);
builder.addAction(R.string.cancel, new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
}
})
.addAction(R.string.ok, new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
}
});
builder.show();
QMUIKeyboardHelper.showKeyboard(builder.getEditText(),true);
}

private void showInputDialog() {
final QMUIDialog.EditTextDialogBuilder builder = new QMUIDialog.EditTextDialogBuilder(this);
builder.setTitle("修改手机号")
.setPlaceholder("请输入您的手机号")
.setInputType(InputType.TYPE_CLASS_PHONE)
.addAction(R.string.cancel, new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
}
})
.addAction(R.string.ok, new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
CharSequence text = builder.getEditText().getText();
if (text != null && text.length() > 0) {
Toast.makeText(DialogActivity.this, "您的手机号: " + text, Toast.LENGTH_SHORT).show();
dialog.dismiss();
} else {
Toast.makeText(DialogActivity.this, "请填入手机号", Toast.LENGTH_SHORT).show();
}
}
})
.show();
}

private void showMultiDialog() {
final String[] items = new String[]{"阅读", "听歌", "篮球", "足球", "台球", "电影"};
final QMUIDialog.MultiCheckableDialogBuilder builder = new QMUIDialog.MultiCheckableDialogBuilder(this)
.setTitle("你的兴趣爱好是什么?")
.setCheckedItems(new int[]{1, 3})
.addItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

}
});
builder.addAction("取消", new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
}
});
builder.addAction("提交", new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
String result = "你选择了 ";
for (int i = 0; i < builder.getCheckedItemIndexes().length; i++) {
result += "" + builder.getCheckedItemIndexes()[i] + "; ";
}
Toast.makeText(DialogActivity.this, result, Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
builder.show();
}

private void showSingleDialog() {
final String[] items = {"男", "女"};
final int checkedIndex = 1;
new QMUIDialog.CheckableDialogBuilder(this)
.setTitle("您的性别是?")
.setCheckedIndex(checkedIndex)
.addItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(DialogActivity.this, "你选择了 " + items[which], Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
})
.show();
}

private void showCheckboxDialog() {
new QMUIDialog.CheckBoxMessageDialogBuilder(this)
.setTitle("退出后是否删除账号信息?")
.setMessage("删除账号信息")
.setChecked(true)
.addAction(R.string.cancel, new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
}
})
.addAction(R.string.ok, new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
}
})
.show();
}

private void showMenuDialog() {
new QMUIDialog.MenuDialogBuilder(this)
.addItem("篮球", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
})
.addItem("足球", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
})
.addItem("网球", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
})
.show();
}

private void showMsgDialog(String title,String message) {
new QMUIDialog.MessageDialogBuilder(this)
.setTitle(title)
.setMessage(message)
.addAction(new QMUIDialogAction(this, R.string.cancel, new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
}
}))
.addAction(new QMUIDialogAction(this, R.string.ok, new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
}
}))
.setSkinManager(QMUISkinManager.defaultInstance(this))
.show();
}

private void initData() {
List<String> data = new ArrayList<>();
String[] listItems = {
"消息类型对话框",
"菜单类型对话框",
"带 Checkbox 的消息确认框",
"单选菜单类型对话框",
"多选菜单类型对话框",
"带输入框的对话框",
"高度适应键盘升降的对话框"
};

Collections.addAll(data,listItems);

mAdapter = new DialogAdapter(R.layout.item_dialog,data);
}

public static class MyItemDecoration extends RecyclerView.ItemDecoration{
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.set(10,20,10,20);
}
}
}