Kevin Learn QMUI-->QMUIDialog
Posted Kevin_小飞象
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kevin Learn QMUI-->QMUIDialog相关的知识,希望对你有一定的参考价值。
简介
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
-
引入库
请确保配置了 JCenter 仓库源,然后直接引用:
implementation"com.qmuiteam:qmui:2.0.0-alpha10"
至此,QMUI 已被引入项目中。 -
配置主题
把项目的 theme 的 parent 指向 QMUI.Compat,至此,QMUI 可以正常工作。
<style name="Theme.QMUIDemo" parent="QMUI.Compat.NoActionBar"></style>
效果图
核心代码
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);
以上是关于Kevin Learn QMUI-->QMUIDialog的主要内容,如果未能解决你的问题,请参考以下文章
Kevin Learn QMUI-->QMUIVerticalTextView
Kevin Learn QMUI--> QMUIEmptyView
Kevin Learn QMUI-->QMUILinkTextView