一、创建一个一般的弹出对话框AlertDialog:
创建对话框 一个对话框一般是一个出现在当前Activity之上的一个小窗口。 处于下面的Activity失去焦点, 对话框接受所有的用户交互。对话框一般用于提示信息和与当前应用程序直接相关功能。
二、创建AlertDialog通常使用的方法使用到的方法:
setIcon();setTitle();setMessage();setView();setAdapter();setPositiveButton();setNegativeButton();setNeutralButton();setMultiChoiceItems();setSingleChoiceItems();create();show()...
三、创建AlertDialog时,多数包含的共同方法:
// 创建面板 , 创建Buidker构建器
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 绘制面板 添加需要内容并进行显示
builder.setTitle("普通提示").setMessage("确定退出吗?").create().show();
四、普通对话框中通常使用的控件:
1)普通对话框添加按钮(Dialog的按钮显示在安卓4.0+和5.0+中不同,5.0以后不在存在边框,默认的按钮是横排,每个按钮都有固定位置。如果不注意顺序的话,可能造成文字没有间距),创建步骤:
1.创建AlertDialog.Builder对象。
例如:AlertDialog.Builder builder = new AlertDialog.Builder(this);
2.通过builder设置普通对话框。
例:builder=builder.setTitle().setMessage().setPositiveButton().setNegativeButton().setNe utralButton();
3.将设置好的builder通过使用create()方法转换成为AlerDialog对象
例:AlerDialog alertdialog = builder.create();
4.调用show()方法显示。
例:alertdialog.show();
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
/**
* 根据要求设置布局res/layout/xx.xml文件
*
* 为xx.xml文件中的控件添加点击事件,空间的点击事件引发的动作是普通弹出对话框。
* 弹出对话框通常最多设置三个按钮(弹出对话框中按钮顺序为1,3,2),分别使用方法setPositiveButton(name,onclick).setNegativeButton(name,onclick).setNeutralButton(name,onclick).create.show();
* 其中参数name :弹出对话框中的按钮名称;onclick :弹出对话框中对应按钮的点击事件。
*
* 创建对话框的步骤
* 1.创建Builder构建器 AlertDialog.Builder builder
* 2.给Builder构建器去setXXX内容
* 3.如果setXXX内容设置完毕,将Builder构建器通过create()方法转成AlertDialog;
* 4.让转换后的builder,调用AlertDialog的show()方法将对话框进行显示。
*
* @author Administrator
*
*/
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void showClick(View view) {
// 创建面板 , 创建Buidker构建器
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 绘制面板 添加需要内容
builder = builder.setTitle("普通提示").setMessage("确定退出吗?").setIcon(R.drawable.ic_launcher);
builder.setPositiveButton("确定",
/**
* 添加第一个按钮
*/
//setPositiveButton 第一参数:1.按钮上面的文字;
//第二个参数:按钮上面的单击事件。
new OnClickListener() {
/**
* DialogInterface dialog:按钮所依赖的对话框
* int which:索引值
*/
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("builder", "---->"+which);
dialog.dismiss();//设置对话框消失
// 关闭activity
MainActivity.this.finish();
}
}).setNegativeButton("取消", new OnClickListener() {
/**
* 添加第二个按钮
*/
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("builder", "setNegativeButton" + which);
dialog.dismiss();
}
}).setNeutralButton("忽略", new OnClickListener() {
/**
* 添加第三个按钮
*/
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("builder", "setNeutralButton"+which);
}
}).create().show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
2)弹出对话框显示单选框和复选框,创建步骤:
1.创建AlertDialog.Builder对象。
例如:AlertDialog.Builder builder = new AlertDialog.Builder(this);
2.通过builder设置普通对话框。
例:builder = builder.setTitle().setMessage().setMultiChoiceItems().
setSingleChoiceItems();
在设置复选框的时候结合了按钮一起使用。
3.将设置好的builder通过使用create()方法转换成为AlerDialog对象
例:AlerDialog alertdialog = builder.create();
4.调用show()方法显示。
例:alertdialog.show();
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv_show;
String str[] = {"桌球","高尔夫","保龄球","篮球","旅游","瑜伽"};
String goods[] = {"篮球鞋","上衣","短裤","羽绒服","T恤"};
//存放多选项的集合
List<String> lists = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_show = (TextView) findViewById(R.id.tv_show);//初始化显示文本框
}
//添加按钮点击响应事件
public void click(View view){
switch (view.getId()) {
//复选按钮单击事件
case R.id.btn1:
AlertDialog.Builder builder2= new AlertDialog.Builder(this);
builder2.setTitle("多项选择").setMultiChoiceItems(goods, new boolean[]{false,false,false,false,false}, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
lists.add(goods[which]);
}else{
lists.remove(goods[which]);
}
}
}).setPositiveButton("提交", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tv_show.setText(lists.toString());
dialog.dismiss();
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tv_show.setText("没有选中商品");
dialog.dismiss();
}
}).create().show();
break;
//单选按钮单击事件
case R.id.btn2:
AlertDialog.Builder builder= new AlertDialog.Builder(this);
builder.setTitle("请选择:").setSingleChoiceItems(str, 0, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("builder", "---->"+which);
String choice = str[which];
tv_show.setText(choice);
dialog.dismiss();
}
}).setIcon(R.drawable.ic_launcher).create().show();
break;
default:
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
3)为普通对话框中添加View控件(以EditText为例),创建步骤:
1.创建AlertDialog.Builder对象。
例如:AlertDialog.Builder builder = new AlertDialog.Builder(this);
2.通过builder设置普通对话框。
例:builder = builder.setTitle().setMessage().setView();
视图同样与按钮结合使用。
3.将设置好的builder通过使用create()方法转换成为AlerDialog对象
例:AlerDialog alertdialog = builder.create();
4.调用show()方法显示。
例:alertdialog.show();
下面的带吗是一个简单的小应用,根据名字测试靠什么吃饭,代码如下:
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tvresult;
private EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvresult = (TextView) findViewById(R.id.tvresult);
}
public void click(View view){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();//创建布局填充器 在activity中使用;
View view1 = inflater.inflate(R.layout.item, null);
et = (EditText) view1.findViewById(R.id.edit);
builder.setTitle("进行测试").setView(view1).setPositiveButton("提交", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//获取edittext的值
String msg = et.getText().toString().trim();
int r = msg.hashCode();
Log.i("aaa", r+"");
tvresult.setVisibility(View.VISIBLE);
if (r%2 == 0) {
tvresult.setText(msg+"靠大脑吃饭");
}else if(r%3 == 0){
tvresult.setText(msg+"靠脸皮吃饭");
}else if(r%5 == 0){
tvresult.setText(msg+"靠手吃饭");
}else if(r%7 == 0){
tvresult.setText(msg+"靠逗比吃饭");
}else if(r%11 == 0){
tvresult.setText(msg+"靠老婆吃饭");
}else {
tvresult.setText(msg+"靠丐帮吃饭");
}
dialog.dismiss();
}
}).setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create().show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
五、总结:
普通对话款在Android开发中应用较为广泛,在普通对话框里面通常包含按钮,图标,主题,内容,选择列表,视图控件等。上述对普通对话框的基本介绍及用途介绍希望对大家有用。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。