Android学习:对话框与消息框

Android学习:对话框与消息框

学习要点:1、了解Android系统各种对话框的基本功能

2、掌握利用AlertDialog创建对话框的方法

3、掌握利用Toast创建消息提示框的方法

1、利用AlertDialog创建对话框

对话框是Activity运行时显示的界面,是应用程序对于用户交互的主要方式之一,例如,对于用户登录时经常出现的“用户名和账号不能为空”这种提示信息,就可以利用对话框来实现。

当对话框提示时,当前的Activity会失去焦点,此时,用户与该Activity不能进行交互,并且当对话框获得焦点时,用户可以操作该对话框。

Android系统中有多种对话框类型,主要包括普通对话框、包含按钮的对话框、单选按钮对话框、复选框对话框、列表对话框、可输入数据对话框、进度条对话框日期对话框以及时间对话框。另外,用户也可以自定义对话框。

AlertDialog构造方法简介

AlertDialog构造方法是Protected类型的,所以不能直接通过new来创建一个AlertDialog,而要用AlertDialog.Builder中的create()方法。

1、setTitle: 为对话框设置标题

2、setIcon: 为对话框设置图标

3、setMessage: 为对话框设置内容

4、setView: 为对话框设置自定义样式

5、setItems: 设置对话框要显示的一个list,一般用于要显示几个命令的情况

6、setMultiChoiceItems: 用来设置对话框显示一系列的复选框

7、setNeutralButton: 用来设置普通按钮

8、setPositiveButton:为对话框添加Yes按钮

9、setNegativeButton:为对话框添加No按钮

10、create:创建对话框

11、show:显示对话框。

具体练习代码如下:

//XML代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical">
​
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="5种类型\n常用对话框"
        android:textAlignment="center"
        android:textColor="@android:color/black"/>
    <Space
        android:layout_width="match_parent"
        android:layout_height="20dp" />
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="确定/取消对话框"/>
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="单选对话框" />
    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="多选对话框"/>
    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="列表对话框"/>
    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="可输入对话框"/>
    <Space
        android:layout_width="match_parent"
        android:layout_height="20dp" />
    <TextView
        android:id="@+id/textView1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:text="获得的对话框结果"
        android:textColor="@android:color/black"/>
</LinearLayout>
            
//MainActivity页面代码
​
package zut.edu.e8;
​
​
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
​
public class MainActivity extends AppCompatActivity {
    //选项数组(喜欢的出行方式)
    final String[] travelType = {"高铁", "飞机", "汽车"};
    //获取选项
    private String selectedItem = "";
    //获取另一个选项
    private String selectedItem2 = "";
    //选项初始化
    private boolean[] init = new boolean[]{false, true, false};
    //默认选项
    private boolean[] mtemp = new boolean[3];
​
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //选项初始化暂缓
        for(int i = 0;i<init.length;i++){
            mtemp[i] = init[i];
        }
        //实例化一个TextView,用于显示选项结果
        final TextView textView1 = (TextView) findViewById(R.id.textView1);
        /* 1/5 : 确定/取消对话框 */
        Button button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener(){
​
            @Override
            public void onClick(View v) {
                textView1.setText("");
                //实例化一个AlertDialog对象
                new AlertDialog.Builder(MainActivity.this)
                        //为对话框设置图标
                        .setIcon(R.drawable.ic_launcher)
                        //设置对话框标题
                        .setTitle("提示")
                        //设置对话框内容
                        .setMessage("是否退出程序?")
                        //"确定"按钮单击事件,退出当前程序
                        .setPositiveButton("确定",
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        finish();//退出当前程序
​
                                    }
                                })
                        //取消按钮单击,关闭对话框
                        .setNegativeButton("取消",
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        textView1.setText("你单击了取消按钮。");
                                    }
                                })
                        //创建并显示对话框
                        .create().show();
            }
        });
        /* 2/5 单选对话框 */
        Button button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView1.setText("");
                selectedItem = travelType[1]; //1.为单选对话框中的checkedItem(默认选项)
​
                new AlertDialog.Builder(MainActivity.this)
                        .setIcon(R.drawable.ic_launcher)
                        .setTitle("请选择你最喜欢出行方式")
                        //设置对话框类型
                        .setSingleChoiceItems(travelType, 1,
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        //MainActivity.this.selectedItem = which;
                                        selectedItem = travelType[which];
                                        textView1.setText("你选择了:"+
                                        selectedItem);
                                    }
                                })
                        .setPositiveButton("确定",
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        textView1.setText("你最终的选择是:"+
                                        selectedItem);
                                    }
                                })
                        .setNegativeButton("取消",
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        textView1.setText("你取消了选择。");
                                    }
                                })
                        .create().show();
            }
        });
                /* 3/5 复选对话框  */
                Button button3 = (Button)findViewById(R.id.button3);
                button3.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        textView1.setText("");
                        new AlertDialog.Builder(MainActivity.this)
                                .setIcon(R.drawable.ic_launcher)
                                .setTitle("请选择你喜欢的出行方式:")
                                .setMultiChoiceItems(travelType, init,
                                        new DialogInterface.OnMultiChoiceClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                                selectedItem = travelType[which];
                                                if(init[which]){
                                                    textView1.setText("你选择了:" +
                                                    selectedItem);
                                                }
                                                else {
                                                    textView1.setText("你取消了选择的:"+
                                                    selectedItem);
                                                }
                                            }
                                        })
                                .setPositiveButton("确定",
                                        new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                String temp = "";
                                                //遍历获取所选项
                                                for (int i= 0;i<init.length;i++){
                                                    if (init[i]){
                                                        temp += "/n" + travelType[i];
                                                    }
                                                }
                                                textView1.setText("你的最终选择是:"+temp);
                                                //还原默认选项
                                                for (int i = 0;i<init.length;i++){
                                                    init[i] = mtemp[1];
                                                }
                                            }
                                        })
                                .setNegativeButton("取消",
                                        new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                textView1.setText("你取消了选择。");
                                            }
                                        })
                                .create().show();
                    }
                });
                /* 4/5 列表对话框   */
                Button button4 = (Button)findViewById(R.id.button4);
                button4.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        textView1.setText("");
                        new AlertDialog.Builder(MainActivity.this)
                                .setTitle("请选择出你喜欢的出行方式:")
                                .setIcon(R.drawable.ic_launcher)
                                .setItems(travelType, new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        // MainActivity.this.selectedItem = which
                                        selectedItem2 = travelType[which];
                                        textView1.setText("你选择了:"+selectedItem2);
                                    }
                                })
                                //注:通常无须再为“确定”和“取消”按钮编写相应程序
                                .create().show();
                    }
                });
                /*  5/5 可输入对话框 */
                Button button5 = (Button)findViewById(R.id.button5);
                button5.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        //实例化一个EditText,用于接收用户输入
                        final EditText travelInput = new EditText(MainActivity.this);
                        new AlertDialog.Builder(MainActivity.this)
                                .setIcon(R.drawable.ic_launcher)
                                .setTitle("请输入你喜欢的出行方式:")
                                .setView(travelInput)
                                .setPositiveButton("确定",
                                        new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                textView1.setText("你输入的是:"+travelInput.getText().toString());
                                            }
                                        })
                                .setNegativeButton("取消",
                                        new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        textView1.setText("你取消了选择。");
                                    }
                                })
                                .create().show();
                    }
                });
    }
}

【说明】 在Android2.X版本中,“确定/ok”按钮位于对话框的左侧,“取消/Cancel”按钮位于对话框的右侧,而在4.0及以后版本中则调换了位置。

2、利用Toast显示消息提示框

在Android系统中,如果仅是弹出一个小提示,向用户短时、简要地显示相应的信息(如用音量控制提示或者信息保存成功提示等),而无须用户进行其他操作,就可以使用Toast来实现(显示一个提示或者说明)

Toast是Android系统提供的一种简洁的信息视图,该视图浮于应用程序之上。与Dialog不同的是,Toast是没有焦点的,所以,即使用户正在输入也不影响该视图的显示。另外,Toast显示的时间有限,过了一定时间就会自动消失。

1、Toast简介

Toast是一个类,主要管理消息的提示。

makeText(Context context,String text,int Toast.LENGTH_LONG/Toast.LENGTH_SHORT)是Toast的一个方法,用来显示相应的信息,其三个参数的定义如下:

第一个参数:上下文参数,如果context等于this,指在当前页面显示

第二个参数:要显示的内容

第三个参数:两个都可选的显示时间参数,Toast.LENGTH_LONG时间稍微长一点(约3.5s),Toast.LENGTH_SHORT时间稍微短一点(约2s)

Toast消息提醒框通过show()方法来显示,所以Toast的基本代码是

Toast.makeText(context,text,Toast.LENGTH_LONG).show()

或者

Toast.makeText(context,text,Toast.LENGTH_SHORT).show()

具体练习代码如下:

//XML代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:orientation="vertical">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn01"
        android:text="确认取消按钮"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tvMsg"
        android:text="提示框"/>
​
</LinearLayout>
//MainActivity页面代码
package zut.edu.e9;
​
​
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
​
public class MainActivity extends AppCompatActivity {
    final String[] travelType={"高铁","飞机","汽车"};
    String selectItem;//选中项
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn01=(Button)findViewById(R.id.btn01);
        final TextView tvMsg=(TextView) findViewById(R.id.tvMsg);
        //代码应该在按钮单击事件里面
        btn01.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //对话框放在按钮时间里面
                new AlertDialog.Builder(MainActivity.this)
                        .setTitle("请选择出行方式")
                        .setSingleChoiceItems(travelType, 1, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int which) {
                                selectItem=travelType[which];//将当前选择索引复制给数组,取值
                                tvMsg.setText("你选择了"+selectItem);
                            }
                        })
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                tvMsg.setText("你的选择是:"+selectItem);
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
​
                                // tvMsg.setText("你取消了"+selectItem);
                                //1.当前类 2.内容
                                Toast.makeText(MainActivity.this,"选择取消",Toast.LENGTH_LONG).show();
                            }
                        })
                        .create().show();
            }
        });
    }
}
​

猜你喜欢

转载自blog.csdn.net/weixin_52021660/article/details/123882058