1. 引入库
1.最新的库会上传到 JCenter 仓库上,请确保配置了 JCenter 仓库源,然后直接引用:
compile 'com.qmuiteam:qmui:1.0.6'
至此,QMUI 已被引入项目中。
2.需要引用QMUI的样式
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
<style name="AppTheme" parent="QMUI.Compat.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
2. QMUIDialog的用法
1.消息类型对话框(蓝色按钮)
new QMUIDialog.MessageDialogBuilder(getActivity()) .setTitle("标题") .setMessage("确定要发送吗?") .addAction("取消", new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { dialog.dismiss(); } }) .addAction("确定", new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { dialog.dismiss(); Toast.makeText(getActivity(), "发送成功", Toast.LENGTH_SHORT).show(); } }) .show();2.消息类型对话框(红色按钮)
new QMUIDialog.MessageDialogBuilder(getActivity()) .setTitle("标题") .setMessage("确定要删除吗?") .addAction("取消", new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { dialog.dismiss(); } }) .addAction(0, "删除", QMUIDialogAction.ACTION_PROP_NEGATIVE, new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { Toast.makeText(getActivity(), "删除成功", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }) .show();3.消息类型对话框 (很长文案)
new QMUIDialog.MessageDialogBuilder(getActivity()) .setTitle("标题") .setMessage("这是一段很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长" + "很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很" + "很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很" + "很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很" + "长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长" + "很长很长很长很长很很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长" + "很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长" + "很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长" + "很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长" + "很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长" + "很长很长很长很长很长很长很长很长很长很长很长很长很长很长长很长的文案") .addAction("取消", new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { dialog.dismiss(); } }) .show();4.菜单类型对话框
final String[] items = new String[]{"选项1", "选项2", "选项3"}; new QMUIDialog.MenuDialogBuilder(getActivity()) .addItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getActivity(), "你选择了 " + items[which], Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }) .show();5.带 Checkbox 的消息确认框
new QMUIDialog.CheckBoxMessageDialogBuilder(getActivity()) .setTitle("退出后是否删除账号信息?") .setMessage("删除账号信息") .setChecked(true) .addAction("取消", new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { dialog.dismiss(); } }) .addAction("退出", new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { dialog.dismiss(); } }) .show();
isChecked() //CheckBox 是否处于勾选状态
6.单选菜单类型对话框final String[] items = new String[]{"选项1", "选项2", "选项3"}; final int checkedIndex = 1; new QMUIDialog.CheckableDialogBuilder(getActivity()) .setCheckedIndex(checkedIndex) .addItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getActivity(), "你选择了 " + items[which], Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }) .show();
getCheckedIndex() //* 获取当前选中的菜单项的下标 @return 负数表示没选中任何项
7.多选菜单类型对话框final String[] items = new String[]{"选项1", "选项2", "选项3", "选项4", "选项5", "选项6"}; final QMUIDialog.MultiCheckableDialogBuilder builder = new QMUIDialog.MultiCheckableDialogBuilder(getActivity()) .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(getActivity(), result, Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); builder.show();8.多选菜单类型对话框(item 数量很多)
final String[] items = new String[]{ "选项1", "选项2", "选项3", "选项4", "选项5", "选项6", "选项7", "选项8", "选项9", "选项10", "选项11", "选项12", "选项13", "选项14", "选项15", "选项16", "选项17", "选项18" }; final QMUIDialog.MultiCheckableDialogBuilder builder = new QMUIDialog.MultiCheckableDialogBuilder(getActivity()) .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(getActivity(), result, Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); builder.show();9.带输入框的对话框
final QMUIDialog.EditTextDialogBuilder builder = new QMUIDialog.EditTextDialogBuilder(getActivity()); builder.setTitle("标题") .setPlaceholder("在此输入您的昵称") .setInputType(InputType.TYPE_CLASS_TEXT) .addAction("取消", new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { dialog.dismiss(); } }) .addAction("确定", new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { CharSequence text = builder.getEditText().getText(); if (text != null && text.length() > 0) { Toast.makeText(getActivity(), "您的昵称: " + text, Toast.LENGTH_SHORT).show(); dialog.dismiss(); } else { Toast.makeText(getActivity(), "请填入昵称", Toast.LENGTH_SHORT).show(); } } }) .show();10.高度适应键盘升降的对话框
QMAutoTestDialogBuilder autoTestDialogBuilder = (QMAutoTestDialogBuilder) new QMAutoTestDialogBuilder(getActivity()) .addAction("取消", new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { dialog.dismiss(); } }) .addAction("确定", new QMUIDialogAction.ActionListener() { @Override public void onClick(QMUIDialog dialog, int index) { Toast.makeText(getActivity(), "你点了确定", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); autoTestDialogBuilder.show(); QMUIKeyboardHelper.showKeyboard(autoTestDialogBuilder.getEditText(), true);
class QMAutoTestDialogBuilder extends QMUIDialog.AutoResizeDialogBuilder { private Context mContext; private EditText mEditText; public QMAutoTestDialogBuilder(Context context) { super(context); mContext = context; } public EditText getEditText() { return mEditText; } @Override public View onBuildContent(QMUIDialog dialog, ScrollView parent) { LinearLayout layout = new LinearLayout(mContext); layout.setOrientation(LinearLayout.VERTICAL); layout.setLayoutParams(new ScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); int padding = QMUIDisplayHelper.dp2px(mContext, 20); layout.setPadding(padding, padding, padding, padding); mEditText = new EditText(mContext); QMUIViewHelper.setBackgroundKeepingPadding(mEditText, QMUIResHelper.getAttrDrawable(mContext, R.attr.qmui_list_item_bg_with_border_bottom)); mEditText.setHint("输入框"); LinearLayout.LayoutParams editTextLP = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, QMUIDisplayHelper.dpToPx(50)); editTextLP.bottomMargin = QMUIDisplayHelper.dp2px(getContext(), 15); mEditText.setLayoutParams(editTextLP); layout.addView(mEditText); TextView textView = new TextView(mContext); textView.setLineSpacing(QMUIDisplayHelper.dp2px(getContext(), 4), 1.0f); textView.setText("观察聚焦输入框后,键盘升起降下时 dialog 的高度自适应变化。\n\n" + "QMUI Android 的设计目的是用于辅助快速搭建一个具备基本设计还原效果的 Android 项目," + "同时利用自身提供的丰富控件及兼容处理,让开发者能专注于业务需求而无需耗费精力在基础代码的设计上。" + "不管是新项目的创建,或是已有项目的维护,均可使开发效率和项目质量得到大幅度提升。"); textView.setTextColor(ContextCompat.getColor(getContext(), R.color.app_color_description)); textView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); layout.addView(textView); return layout; } }