在Android开发中,时常遇到要弹窗提醒的情况,而系统自带的弹出对话框由于不是很美观,因此通过Android本身封装的AlertDialog.Builder类,可以很方便易设置自己需要的Dialog,由于自己定义的布局文件,可以来到美化弹出式对话框的目的。同时,通过实现了DialogInterface.OnClickListener接口,用于实现对点击对话框上按钮做出相应的相应处理。
1、自定义一个Dialog的布局文件dialog.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:orientation="vertical" >
<EditText
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:hint="请输入内容..."
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
2、自定义一个继承Dialog的子类MyDialog.java
package com.ui.dialog.demo;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.view.ViewGroup.LayoutParams;
import android.widget.Toast;
// 自定义的Dialog类
public class MyDialog extends Dialog
{
private Context context;
public MyDialog(Context context)
{
super(context);
this.context = context;
showDialog(context);
}
/**
* 显示自定义Layout的Dialog
* @param context
*/
private void showDialog(final Context context)
{
// 加载自定义Dialog的布局文件
View dialogView = LayoutInflater.from(context)
.inflate(R.layout.dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(dialogView) // 设置Dialog显示的View
.setTitle("自定义对话框") // 设置Title的内容
.setIcon(R.drawable.dialog_icon); // 设置Dialog的图标
// 处理Dialog的点击事件
builder.setPositiveButton("确认", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
Toast.makeText(context, "你点击了OK按钮", Toast.LENGTH_LONG)
.show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
Toast.makeText(context,"你点击了Cancel按钮", Toast.LENGTH_LONG)
.show();
}
});
// 设置为false,按返回键时不退出,默认为true
builder.setCancelable(false);
// 用于显示Dialog
builder.show();
}
}
根据需要,可以设置各式各样的对话框,本例的实现效果如下: