本文代码来自《Android移动开发基础案例教程》,在内容上的说明已进行补充~
1、普通对话框
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//声明对象
AlertDialog dialog;
//绑定当前界面窗口,设置标题
dialog = new AlertDialog.Builder(this).setTitle("Dialog对话框")
.setMessage("是否确定退出?")
.setIcon(R.mipmap.ic_launcher)
.setPositiveButton("确定",null)//参数1:按钮显示信息 参数2:是否设置监听
.setNegativeButton("取消",null)//参数1:按钮显示信息 参数2:是否设置监听
.create();//创建对话框
dialog.show();//显示对话框
}
}
2、单选对话框
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//生成对话框
new AlertDialog.Builder(this)
.setTitle("请选择性别")
.setIcon(R.mipmap.ic_launcher)
.setSingleChoiceItems(new String[]{"男", "女"}, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
//setSingleChoiceItems()方法的参数1:建立数组显示选项内容
//参数2:设置是否默认选中,“0”表示默认选中第一个选项
//参数3:设立监听,允许对话框被点击
.setPositiveButton("确定",null)
.show();
}
}
3、复选对话框
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//生成对话框
new AlertDialog.Builder(this)
.setTitle("请添加兴趣爱好!")
.setIcon(R.mipmap.ic_launcher)
.setMultiChoiceItems(new String[]{"旅游","美食","编程","绘画"},null,null)
//参数1:建立数组,用于显示选项内容
//参数2:boolean数组,用来判断哪个选项需要勾选,没有选null
//参数3:建立监听,对话框是否允许被点击
.setPositiveButton("确定",null)
.show();
}
}
注意,setMultiChoiceItems()方法中的第2个参数使用boolean数组时,定义的长度要对应第1个参数设置的选项个数。例如上图有4个选项,则第2个参数应填写为new boolean[]{true,true,true,true}
4、进度条对话框
在Android中提供了圆形进度条和水平进度条两种进度条样式。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ProgressDialog progressDialog;//声明对话框
progressDialog = new ProgressDialog(this);//构建对话框
progressDialog.setTitle("进度条对话框");
progressDialog.setIcon(R.mipmap.ic_launcher);
progressDialog.setMessage("正在下载请等候……");
//设置水平进度条
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置圆形进度条
//progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
}
}
5、消息对话框
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(this,"Hello,I am Toast!",Toast.LENGTH_SHORT).show();
}
}
6、自定义对话框
(1)创建布局
创建 my_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="#ffffff"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="#0080FF"
android:gravity="center"
android:text="自定义对话框"
android:textColor="#ffffff"
android:textSize="15dp"
android:visibility="visible"/>
<LinearLayout
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:id="@+id/tv_msg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:minHeight="100dp"
android:paddingBottom="15dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="15dp"
android:textColor="#0080FF"
android:textSize="16dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_gravity="bottom"
android:background="#E0E0E0"
android:gravity="center"
android:orientation="horizontal">
<Button
android:id="@+id/btn_ok"
android:layout_width="114dp"
android:layout_height="40dp"
android:layout_marginLeft="20dp"
android:layout_weight="1"
android:gravity="center"
android:background="#ffffff"
android:text="确定" />
<Button
android:id="@+id/btn_cancel"
android:layout_width="114dp"
android:layout_height="40dp"
android:layout_weight="1"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:gravity="center"
android:background="#ffffff"
android:text="取消" />
</LinearLayout>
</LinearLayout>
</FrameLayout>
(2)创建自定义对话框
创建 MyDialog.java
package com.example.lenovo.androidpart2;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
public class MyDialog extends Dialog {
private String dialogName;
private TextView tvMsg;
private Button btn_ok;
private Button btn_cancel;
public MyDialog( Context context,String dialogName) {
super(context);
this.dialogName = dialogName;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//去除标题
setContentView(R.layout.my_dialog);//引入自定义对话框布局
tvMsg = (TextView)findViewById(R.id.tv_msg);
btn_ok = (Button)findViewById(R.id.btn_ok);
btn_cancel = (Button)findViewById(R.id.btn_cancel);
tvMsg.setText(dialogName);//设置自定义对话框显示内容
//为“确定”按钮设置点击事件
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击“确定”按钮时的操作
}
});
//为“取消”按钮设置点击事件
btn_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();//关闭当前对话框
}
});
}
}
(3)使用自定义对话框
创建 MainActivity.java
package com.example.lenovo.androidpart2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDialog myDialog = new MyDialog(this,"我是自定义的Dialog");
myDialog.show();
}
}