目录
8.消息、通知、广播与闹钟(一)
1.通过Toast类显示消息提示框
Toast类通常用于显示一些快速提示信息,应用范围非常广泛。
应用Toast 类在屏幕中显示的消息提示框具有如下几个特点:
◆没有任何控制按钮。
◆不会获得焦点。
◆经过一段时间后会自动消失。
使用Toast类来显示消息提示框比较简单,只需要以下3个操作步骤即可实现:
(1)创建一个Toast对象。通常有两种方法,一种是使用构造方法进行创建,另一种是调用Toast类的makeText()方法创建。
使用构造方法创建一个名称为“toast” 的Toast对象的基本代码如下:
Toast toast=new Toast(this);
调用Toast 类的makeText()方法创建一个名称为“toast”的Toast对象的基本代码如下:
Toast toast=Toast.makeText(this,"要显示的内容",Toast.LENGTH_SHORT);
(2)调用Toast类提供的方法来设置该消息提示的对齐方式、页边距以及显示的内容等。常用的方法如表8.1所示。
表8.1 Toast 类的常用方法
| 方法 | 描述 |
|---|---|
| setDuration(int duration) | 用于设置消息提示框特续时间的长短,通常使用Toast.LENGTH_LONG或Toast.LENGTH_SHORT参数值 |
| setGravity(int gravity, int xOffset, int yOffset) | 用于设置消息提示框的位置,参数gravity用于指定对齐方式,xOffset和yOffset用于指定具体的偏移值 |
| setMargin(float horizontalMargin, float verticalMargin) | 用于设置消息提示的页边距 |
| setText(CharSequence s) | 用于设置要显示的文本内容 |
| setView(View view) | 用于设置将要在消息提示框中显示的视图 |
(3)调用Toast 类的show()方法显示消息提示框。需要注意的是,一定要调用该方法,否则设置的消息提示框将不显示。
2.使用AlertDialog类实现对话框
AlertDialog类的功能非常强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的列表对话框。
使用AlertDialog生成的对话框通常可分为4个区域,分别是图标区、标题区、内容区和按钮区。
使用AlertDialog可以生成的对话框,概括起来有以下4种:
◆带确定、中立和取消等多个按钮的提示对话框,其中的按钮个数不是固定的,可以根据需要添加。例如,不需要有中立按钮,那么就可以生成只带有确定和取消按钮的对话框,也可以是只带有一个按钮的对话框。
◆带列表的列表对话框。
◆带多个单选列表项和多个按钮的列表对话框。
◆带多个多选列表项和多个按钮的列表对话框。
在使用AlertDialog类生成对话框时,常用的方法如表8.2所示。
表8.2 AlertDialog 类的常用方法
| 方法 | 描述 |
|---|---|
| setTitle(CharSequence title) | 为对话框设置标题 |
| setlcon(Drawable icon) | 使用Drawable资源为对话框设置图标 |
| setlcon(int resld) | 使用资源ID所指的Drawable资源为对话框设置图标 |
| setMessage(CharSequence message) | 为提示对话框设置要显示的内容 |
| setButton() | 为提示对话框添加按钮,可以是取消按钮、中立按钮和确定按钮。需要通过为其指定int类型的whichButton参数实现,其参数值可以是DialogInterface.BUTTON_POSITIVE(确定按钮)、BUTTON_NEGATIVE(取消按钮)、BUTTON_NEUTRAL(中立按钮) |
通常情况下,使用AlertDialog类只能生成带多个按钮的提示对话框,要生成另外3种列表对话框需要使用AlertDalog.Builder类,AlertDalog.Builder类提供的常用方法如表8.3所示。
表8.3 AlertDialog.BuiIder类的常用方法
| 方法 | 描述 |
|---|---|
| setTitle(CharSequence title) | 为对话框设置标题 |
| setlcon(Drawable icon) | 使用Drawable资源为对话框设置图标 |
| setlcon(int resld) | 使用资源ID所指的Drawable资源为对话框设置图标 |
| setMessage(CharSequence message) | 为提示对话框设置要显示的内容 |
| setNegativeButton() | 为对话框添加取消按钮 |
| setPositiveButton() | 为对话框添加确定按钮 |
| setNeutralButton() | 为对话框添加中立按钮 |
| setItems() | 为对话框添加列表项 |
| setSingleChoiceItems() | 为对话框添加单选列表项 |
例:




MainActivity.java
package com.example.alertdialog;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private boolean[] checkedItems;//记录各列表项的状态
private String[] items;//各列表项要显示的内容
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar=getSupportActionBar();
actionBar.hide();
/**
* 显示带取消和确定按钮的对话框
*/
Button bt1=(Button) findViewById(R.id.main_bt1);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建对话框对象
AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setIcon(R.drawable.advise);//设置对话框的图标
alertDialog.setTitle("乔布斯");//设置对话框的标题
//设置要显示的内容
alertDialog.setMessage("活着就是为了改变世界,难道还有其他原因吗?");
//添加取消按钮
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "否",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,"您单击了否按钮",
Toast.LENGTH_SHORT).show();
}
});
//添加确定按钮
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,"您单击了是按钮",
Toast.LENGTH_SHORT).show();
}
});
//显示对话框
alertDialog.show();
}
});
/**
* 显示带列表的对话框
*/
Button bt2=(Button) findViewById(R.id.main_bt2);
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建名言字符串数组
final String[] items=new String[]{"当你有使命,它会让你更专注","要么出众,"+"要么出局",
"活着就是为了改变世界","求知若渴,虚心若愚"};
//创建列表对话框对象
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.advise1);//设置对话框的图标
builder.setTitle("请选择你喜欢的名言:");//设置对话框的标题
//添加列表项
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,"您选择了"+items[i],
Toast.LENGTH_SHORT);
}
});
builder.create().show();//创建对话框并显示
}
});
/**
* 显示带单选列表项的对话框
*/
Button bt3=(Button) findViewById(R.id.main_bt3);
bt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建名字字符串数组
final String[] items=new String[]{"扎克伯格","乔布斯","拉里·埃里森","安迪·鲁宾","马云"};
//显示带单选列表项的对话框
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.advise2);//设置对话框的图标
builder.setTitle("如果让你选择,你最想做哪一个:");//设置对话框的标题
builder.setSingleChoiceItems(items, 0,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//显示选择结果
Toast.makeText(MainActivity.this,"您选择了"+items[i],
Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确定",null);//添加确定按钮
builder.create().show();//创建对话框并显示
}
});
/**
* 显示带多选列表项的对话框
*/
Button bt4=(Button) findViewById(R.id.main_bt4);
bt4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//记录各列表项的状态
checkedItems = new boolean[]{false,true,false,true,false};
//各列表项要显示的内容
items = new String[]{"开心消消乐","球球大作战","欢乐斗地主","梦幻西游","超级玛丽"};
//显示带多选列表项的对话框
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.advise2);//设置对话框的图标
builder.setTitle("请选择您喜爱的游戏:");//设置对话框标题
builder.setMultiChoiceItems(items, checkedItems,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
checkedItems[i]=b;//改变被操作列表项的状态
}
});
//为对话框添加确定按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String result="";
for(int j=0;j<checkedItems.length;j++){
if(checkedItems[j]){//当选项被选择时
result+=items[j]+"、";//将选项的内容添加到result中
}
}
//当result不为空时,通过消息提示框显示选择的结果
if(!"".equals(result)){
//去掉最后面添加的顿号”、“
result=result.substring(0,result.length()-1);
Toast.makeText(MainActivity.this,"您选择了["+result+"]",
Toast.LENGTH_SHORT).show();
}
}
});
builder.create().show();//创建对话框并显示
}
});
}
}
本文介绍了Android开发中如何使用Toast显示消息提示框,包括其特点和创建方法。同时,详细讲解了AlertDialog的用法,包括不同类型的对话框创建,并列举了相关方法。此外,还提及了使用AlertDialog.Builder生成列表对话框的相关内容。
&spm=1001.2101.3001.5002&articleId=124220723&d=1&t=3&u=38ff3a3878f94d1c8bf772c7792e4e8f)
1826

被折叠的 条评论
为什么被折叠?



