QMUI框架的所有常用弹出对话框QMUIDialog的使用,让你的对话框更加美观漂亮?

个人用QMUI框架的弹框用的挺多的,确实比自己做的好看,我今天就来说一下QMUI的对话框吧。

还是一样的,建议测试的时候自己先新建一个页面,或者项目,避免发生其他因素而导致实现结果不了。

第一步:QMUI的配置

如果不知道怎么配置QMUI的可以看一下我的这篇博客 QMUI的配置

第二步:QMUIDialog的种类和代码

1.MessageDialogBuilder:消息类型的对话框

代码

 public void MessageDialogBuilder(View view) {
    
    
        new QMUIDialog.MessageDialogBuilder(this)
                .setMessage("标题")
                .setTitle("确认要发送吗?")
                .addAction("取消", new QMUIDialogAction.ActionListener() {
    
    
                    @Override
                    public void onClick(QMUIDialog dialog, int index) {
    
    
                        Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();
                        dialog.dismiss();
                    }
                })
                .addAction("确认", new QMUIDialogAction.ActionListener() {
    
    
                    @Override
                    public void onClick(QMUIDialog dialog, int index) {
    
    
                        Toast.makeText(getApplicationContext(), "确认", Toast.LENGTH_SHORT).show();
                        dialog.dismiss();
                    }
                })
                .show();
    }

代码解析:
在这里插入图片描述
不要忘记调用你的方法:
在这里插入图片描述

效果图:
在这里插入图片描述

2…ConfirmMessageDialogBuilder:带 Checkbox 的消息确认框

代码:

public void ConfirmMessageDialogBuilder(View view) {
    
    
        new QMUIDialog.CheckBoxMessageDialogBuilder(this)
                .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) {
    
    
                             Toast.makeText(getApplicationContext(), "退出", Toast.LENGTH_SHORT).show();
                            dialog.dismiss();
                    }
                })
                .show();
    }

效果图:
在这里插入图片描述

3.MenuDialogBuilder: 菜单对话框

代码

 public void MenuDialogBuilder(View view){
    
    
        final String[] items = new String[]{
    
    "男", "女", "保密"};
        new QMUIDialog.MenuDialogBuilder(this)
                .addItems(items, new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
    
    
                        Toast.makeText(getApplicationContext(), "你选择了 " + items[which], Toast.LENGTH_SHORT).show();
                        dialog.dismiss();
                    }
                })
                .show();
    }

效果图:
在这里插入图片描述

4.EditTextDialogBuilder: 带输入框的对话框

代码:

public void EditTextDialogBuilder(View view) {
    
    
        final QMUIDialog.EditTextDialogBuilder builder = new QMUIDialog.EditTextDialogBuilder(this);
        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(getApplicationContext(), "您的昵称: " + text, Toast.LENGTH_SHORT).show();
                            dialog.dismiss();
                        } else {
    
    
                            Toast.makeText(getApplicationContext(), "请填入昵称", Toast.LENGTH_SHORT).show();
                        }
                    }
                })
                .show();
    }

效果图:
在这里插入图片描述

5.CheckableDialogBuilder: 单选类型的对话框

代码:

 public void CheckableDialogBuilder(View view) {
    
    
        final  String [] items=new  String[]{
    
    "选项一","选项二","选项三"};
        final  int checkIndex=1;
        new QMUIDialog.CheckableDialogBuilder(this)
                .addItems(items, new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
    
    
                        Toast.makeText(getApplicationContext(),"你选择的是"+which,Toast.LENGTH_SHORT).show();
                        dialog.dismiss();
                    }
                })
                .setCheckedIndex(checkIndex)
                .show();
    }

效果图:
在这里插入图片描述

6.MultiCheckableDialogBuilder: 多选类型的对话框

代码:

public void MultiCheckableDialogBuilder(View view) {
    
    
        final  String items []=new String[]{
    
    "选项1","选项2","选项3","选项4","选项5","选项6","选项7","选项8"};
        final QMUIDialog.MultiCheckableDialogBuilder builder = new QMUIDialog.MultiCheckableDialogBuilder(this)
                .addItems(items, new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
    
    

                    }
                })
                .setCheckedItems(new int[]{
    
    0, 5});
        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+=""+items[builder.getCheckedItemIndexes()[i]]+" ";
                }
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
        builder.show();
}

效果图:
在这里插入图片描述

这里,我们基本可以实现大部分弹出对话框了。

第三步:测试的所有代码的Activity和xml文件。

Activity文件:

import android.content.DialogInterface;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;

public class MainActivity extends AppCompatActivity{
    
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void MessageDialogBuilder(View view) {
    
    
        new QMUIDialog.MessageDialogBuilder(this)
                .setMessage("标题")
                .setTitle("确认要发送吗?")
                .addAction("取消", new QMUIDialogAction.ActionListener() {
    
    
                    @Override
                    public void onClick(QMUIDialog dialog, int index) {
    
    
                        Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();
                        dialog.dismiss();
                    }
                })
                .addAction("确认", new QMUIDialogAction.ActionListener() {
    
    
                    @Override
                    public void onClick(QMUIDialog dialog, int index) {
    
    
                        Toast.makeText(getApplicationContext(), "确认", Toast.LENGTH_SHORT).show();
                        dialog.dismiss();
                    }
                })
                .show();
    }



    public void ConfirmMessageDialogBuilder(View view) {
    
    
        new QMUIDialog.CheckBoxMessageDialogBuilder(this)
                .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) {
    
    
                        Toast.makeText(getApplicationContext(), "退出", Toast.LENGTH_SHORT).show();
                        dialog.dismiss();
                    }
                })
                .show();
    }

    public void MenuDialogBuilder(View view){
    
    
        final String[] items = new String[]{
    
    "男", "女", "保密"};
        new QMUIDialog.MenuDialogBuilder(this)
                .addItems(items, new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
    
    
                        Toast.makeText(getApplicationContext(), "你选择了 " + items[which], Toast.LENGTH_SHORT).show();
                        dialog.dismiss();
                    }
                })
                .show();
    }

    public void EditTextDialogBuilder(View view) {
    
    
        final QMUIDialog.EditTextDialogBuilder builder = new QMUIDialog.EditTextDialogBuilder(this);
        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(getApplicationContext(), "您的昵称: " + text, Toast.LENGTH_SHORT).show();
                            dialog.dismiss();
                        } else {
    
    
                            Toast.makeText(getApplicationContext(), "请填入昵称", Toast.LENGTH_SHORT).show();
                        }
                    }
                })
                .show();
    }

    public void CheckableDialogBuilder(View view) {
    
    
        final  String [] items=new  String[]{
    
    "选项一","选项二","选项三"};
        final  int checkIndex=1;
        new QMUIDialog.CheckableDialogBuilder(this)
                .addItems(items, new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
    
    
                        Toast.makeText(getApplicationContext(),"你选择的是"+which,Toast.LENGTH_SHORT).show();
                        dialog.dismiss();
                    }
                })
                .setCheckedIndex(checkIndex)
                .show();
    }

    public void MultiCheckableDialogBuilder(View view) {
    
    
        final  String items []=new String[]{
    
    "选项1","选项2","选项3","选项4","选项5","选项6","选项7","选项8"};
        final QMUIDialog.MultiCheckableDialogBuilder builder = new QMUIDialog.MultiCheckableDialogBuilder(this)
                .addItems(items, new DialogInterface.OnClickListener() {
    
    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
    
    

                    }
                })
                .setCheckedItems(new int[]{
    
    0, 5});
        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+=""+items[builder.getCheckedItemIndexes()[i]]+" ";
                }
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
        builder.show();
    }
}

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:onClick="MessageDialogBuilder"
        android:text="消息类型对话框"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"></Button>

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:onClick="ConfirmMessageDialogBuilder"
        android:text="带checkbox的消息确认框"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button"></Button>

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:onClick="MenuDialogBuilder"
        android:text="菜单对话框 "
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button1"></Button>

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:onClick="EditTextDialogBuilder"
        android:text="带输入框的对话框"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button2"></Button>

    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:onClick="CheckableDialogBuilder"
        android:text="单选类型的对话框"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button3"></Button>

    <Button
        android:id="@+id/button5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:onClick="MultiCheckableDialogBuilder"
        android:text="多选类型的对话框"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button4"></Button>

</androidx.constraintlayout.widget.ConstraintLayout>

猜你喜欢

转载自blog.csdn.net/qq_45137584/article/details/111052989