2.QMUI---QMUIDialog的用法

本文将介绍如何在Android项目中使用QMUI的QMUIDialog组件。首先,你需要在项目中引入QMUI的JCenter仓库,并引用QMUI的样式库。接着,我们将探讨QMUIDialog的各种用法,帮助你实现更丰富的对话框效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
    }
}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值