您的位置:首页 > 移动开发 > Android开发

Android中对话框Dialog的创建

2017-09-21 22:25 417 查看
对话框是提示用户作出决定或输入额外信息的小窗口。 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件。一般用于弹出警告操作,或者当用户删除某重要信息,提示是否确定删除。
在Android中,Dialog需要基类,一般使用其实现类AlertDialog类。此对话框可显示标题、最多三个按钮、可选择项列表或自定义布局。
一般的对话框,有三部分组成:标题,内容区域,操作按钮。

AlertDialog dialog=new AlertDialog.Builder(this)

        .setTitle("标题")

        .setMessage("消息")

        .setPositiveButton("确定"new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                // to do something when user click positive button
            }

        })

        .setNegativeButton("取消"new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                // to do something when user click negative button 
            }

        })

        .create();

dialog.show();

上面代码是创建普通的对话框,没什么特别之处。Dialog可以设置三个按钮,分别为确定、取消、中立按钮,上述代码简单展示了两个。
在Dialog中还可以设置列表如下所示:

AlertDialog dialog=new AlertDialog.Builder(this)
        .setTitle("标题")

        .setItems(R.arrays.dialog, new DialogInterface.OnClickListener() {

            @Override
           
public void onClick(DialogInterface dialogInterface, int i) {
                         //处理列表

            }

        })

        .setSingleChoiceItems(R.arrays.dialog, new DialogInterface.OnClickListener() {

            @Override
           
public void onClick(DialogInterface dialogInterface, int i) {
                            //单选列表

            }

        })

        .setMultiChoiceItems(R.arrays.dialog, new DialogInterface.OnClickListener() {

            @Override
           
public void onClick(DialogInterface dialogInterface, int i) {
                              //多选列表

            }

        })

        .setPositiveButton("确定"new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                // to do something when user click positive button
            }

        })

        .setNegativeButton("取消"new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                // to do something when user click negative button
            }

        })

        .create();

dialog.show();

由于列表出现在对话框的内容区域,因此对话框无法同时显示消息和列表。上面代码中同时例举了三种列表,而在实际中只能显示一种,所以读者根据自己需求更改代码。
如果列表还无法满足你的需求,可以通过调用Builder类的setView()方法设置布局,达到自定义Dialog界面。

AlertDialog dialog=new AlertDialog.Builder(this)

        .setTitle("标题")

        .setView(R.layout.activity_main)

        .setPositiveButton("确定"new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                // to do something when user click positive button
            }

        })

        .setNegativeButton("取消"new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                // to do something when user click negative button
            }

        })

        .create();

dialog.show();

R.layout.acitivity_main布局可以设置为任何你想要实现的界面。如果需要对界面进行相关操作,可以调用Bulider的setView()对应的重载方法。

View view = getLayoutInflater().inflate(R.layout.activity_main,null);

如何设置全屏Dialog?只要在Dialog传入相关的Style属性就可以。

<style name="DialogFullscreen">

    <item name="android:windowFullscreen">true</item>

    <item name="android:windowNoTitle">true</item>
</style>

View view = getLayoutInflater().inflate(R.layout.activity_mainnull);

AlertDialog dialog = new AlertDialog.Builder(this, R.style.DialogFullscreen)

        .setTitle("标题")

        .setView(view)

        .setPositiveButton("确定"new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                // to do something when user click positive button
            }

        })

        .setNegativeButton("取消"new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                // to do something when user click negative button
            }

        })

        .create();

dialog.show();

简简单单就是实现了Dialog的全屏,当然可以在样式定义Dialog的背景,以及其他属性。Dialog的基础知识就到这里了。
另外:还有DatePickDialog和TimePickDialog对日期和时间的一个选择提出框。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息