对话框整理
普通对话框
/**
* 普通对话框
*
* 对话框中的一些属性不一定是必须的,比如可以不设置标题、图标之类的,
*
* 也可以只设置一个按钮或者两个按钮,如常见的确认退出对话框
*/
private void commonDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("普通对话框");// 设置标题
// builder.setIcon(R.drawable.ic_launcher);//设置图标
builder.setMessage("我是内容");// 为对话框设置内容
// 为对话框设置取消按钮
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
myToast("您点击了取消按钮");
}
});
// 为对话框设置中立按钮
// builder.setNeutralButton("中立", new OnClickListener() {
//
// @Override
// public void onClick(DialogInterface arg0, int arg1) {
// // TODO Auto-generated method stub
// myToast("您点击了中立按钮");
// }
// });
// 为对话框设置确定按钮
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
myToast("您点击了确定按钮");
}
});
builder.create().show();// 使用show()方法显示对话框
}
单选对话框
/**
* 单选对话框
*/
private void singleDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("单选对话框");
final String[] items = { "男", "女" };// 创建一个存放选项的数组
final boolean[] checkedItems = { true, false };// 存放选中状态,true为选中
// ,false为未选中,和setSingleChoiceItems中第二个参数对应
// 为对话框添加单选列表项
// 第一个参数存放选项的数组,第二个参数存放默认被选中的项,第三个参数点击事件
builder.setSingleChoiceItems(items, 0, new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
for (int i = 0; i < checkedItems.length; i++) {
checkedItems[i] = false;
}
checkedItems[arg1] = true;
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
arg0.dismiss();
}
});
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
String str = "";
for (int i = 0; i < checkedItems.length; i++) {
if (checkedItems[i]) {
str = items[i];
}
}
myToast("您选择了" + str);
}
});
builder.create().show();
}
多选对话框
/**
* 多选对话框
*/
private void multipleDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("多选对话框");
final String[] items = { "数学", "语文", "英语", "政治" };// 存放选项的数组
final boolean[] checkedItems = { false, true, false, false };
// 第一个参数选项,第二个参数选项的状态,第三个点击事件
builder.setMultiChoiceItems(items, checkedItems,
new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1,
boolean arg2) {
// TODO Auto-generated method stub
if (arg2) {
checkedItems[arg1] = true;
} else {
checkedItems[arg1] = false;
myToast("您取消了" + items[arg1]);
}
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
arg0.dismiss();
}
});
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
String str = "";
for (int i = 0; i < checkedItems.length; i++) {
if (checkedItems[i]) {
str = str + items[i];
}
}
myToast("您选择了" + str);
}
});
builder.create().show();
}
列表对话框
/**
* 列表对话框
*/
private void listDialog() {
final String[] items = { "苹果", "草莓", "橘子", "冬瓜" };
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("我是列表对话框");
builder.setItems(items, new OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
myToast(items[arg1]);
}
});
builder.create().show();
}
不带进度条的对话框,常用于等待加载数据时使用
/**
* 不带进度条的对话框,常用于等待加载数据时使用
*/
private void proDialog1() {
ProgressDialog dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("不带进度条的对话框");
dialog.setMessage("正在加载中~");
dialog.show();
}
带进度的对话框
/**
* 带进度的对话框
*/
private void proDialog2() {
final ProgressDialog dialog = new ProgressDialog(MainActivity.this);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置水平样式
dialog.setTitle("带进度条的对话框");
dialog.setMessage("加载中~");
dialog.setMax(200);
dialog.show();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for (int j = 0; j <= 200; j++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dialog.setProgress(j);
}
}
}).start();
}
自定义布局的对话框
/**
* 自定义布局的对话框
*/
private void layDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
// 创建一个view,并且将布局加入view中
View view = LayoutInflater.from(MainActivity.this).inflate(
R.layout.dialog_edt, null, false);
// 将view添加到builder中
builder.setView(view);
// 创建dialog
final Dialog dialog = builder.create();
// 初始化控件,注意这里是通过view.findViewById
final EditText edt = (EditText) view.findViewById(R.id.edt);
Button confirm = (Button) view.findViewById(R.id.confirm);
Button cancel = (Button) view.findViewById(R.id.cancel);
// 设置button的点击事件及获取editview中的文本内容
confirm.setOnClickListener(new android.view.View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String str = edt.getText() == null ? "" : edt.getText()
.toString();
myToast(str);
}
});
// 取消按钮
cancel.setOnClickListener(new android.view.View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
dialog.show();
}
布局:
<?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:gravity="center"
android:orientation="vertical" >
<EditText
android:id="@+id/edt"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:hint="请输入内容" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="50dp"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="确定" />
<Button
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="取消" />
</LinearLayout>
</LinearLayout>
自定义对话框
package com.example.dialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
/**
* 自定义对话框
*
* @author dimanche
*
*/
public class MyDialog extends Dialog {
private TextView title, content;
private Button confirm, cancel;
private String titleStr, contentStr, confirmStr, cancelStr;
private Context mContext;
// 按钮监听器
private OnNoClickListener onNoClickListener;
private OnYesClickListener onYesClickListener;
public MyDialog(Context context) {
super(context);
this.mContext = context;
}
public MyDialog(Context context, int theme) {
super(context, theme);
this.mContext = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog_my);
init();
setSize();
title.setText(titleStr);
content.setText(contentStr);
confirm.setText(confirmStr);
cancel.setText(cancelStr);
// 确认按钮
confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (onYesClickListener == null) {
return;
}
onYesClickListener.confirm();
}
});
// 取消按钮
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (onNoClickListener == null) {
return;
}
onNoClickListener.cancel();
}
});
}
/*
* 初始化控件
*/
private void init() {
title = (TextView) findViewById(R.id.title);
content = (TextView) findViewById(R.id.content);
confirm = (Button) findViewById(R.id.confirm);
cancel = (Button) findViewById(R.id.cancel);
}
/*
* 设置对话框的大小
*/
private void setSize() {
Window window = getWindow();
// Point point = new Point();
Display display = getWindow().getWindowManager().getDefaultDisplay();
int x = display.getWidth();
int y = display.getHeight();
WindowManager.LayoutParams layoutParams = window.getAttributes();
layoutParams.width = (x * 3) / 4;
layoutParams.height = y / 2;
window.setAttributes(layoutParams);
}
// ============================为外界服务部分============================
/*
* 设置取消对话框的点击事件的监听接口
*/
public interface OnNoClickListener {
public void cancel();
}
/*
* 设置确认对话框的点击事件的监听接口
*/
public interface OnYesClickListener {
public void confirm();
}
/*
* 为外部设置监听部分
*/
public void setOnYesClick(String str, OnYesClickListener onYesClickListener) {
if (str != null) {
this.confirmStr = str;
}
this.onYesClickListener = onYesClickListener;
}
public void setOnNoClick(String str, OnNoClickListener onNoClickListener) {
if (str != null) {
this.cancelStr = str;
}
this.onNoClickListener = onNoClickListener;
}
/**
* 为外界暴露方法,设置标题内容等
*/
public void setTile(String str) {
this.titleStr = str == null ? "" : str;
}
public void setContent(String str) {
this.contentStr = str == null ? "" : str;
}
}
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="20sp"
android:text="" />
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:padding="5dp"
android:text="sss" />
<View
android:id="@+id/line"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" />
<Button
android:id="@+id/cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignRight="@id/line"
android:layout_alignParentBottom="true"
android:text="取消" />
<Button
android:id="@+id/confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/line"
android:layout_alignParentBottom="true"
android:text="确定" />
</RelativeLayout>
代码已上传百度云:
链接:https://pan.baidu.com/s/1gF-XjSkeV5VdeDewAieJeA
提取码:9pla
个人微信公众号:
![](https://img.haomeiwen.com/i10388040/a6d2ff9ced3d45f9.png)
网友评论