先准备自定义Dialog的三张图片素材:
背景图片dialog_bg.png:
标题图片dialog_title_image.png:
标题与内容的分割线图片lins.png:
下面贴代码。
自定义Dialog:
package com.zzj.ui.dialogdemo;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import com.zzj.ui.R;
public class MyDialog extends Dialog {
private Button okBtn, cancelBtn;
private TextView messageText;
public MyDialog(Context context) {
super(context, R.style.MyDialog);
setContentView(R.layout.dialog);
okBtn = (Button) findViewById(R.id.dialog_button_ok);
cancelBtn = (Button) findViewById(R.id.dialog_button_cancel);
messageText = (TextView) findViewById(R.id.message_text);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setCanceledOnTouchOutside(false);
}
/**
* 确定事件
*
* @param clickListener
*/
public void setOKClick(android.view.View.OnClickListener clickListener) {
okBtn.setOnClickListener(clickListener);
}
/**
* 取消事件
*
* @param clickListener
*/
public void setCancelClick(android.view.View.OnClickListener clickListener) {
cancelBtn.setOnClickListener(clickListener);
}
/**
* 设置消息内容
*
* @param text
*/
public void setMessage(String text) {
messageText.setText(text);
}
}
自定义Dialog布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:background="@drawable/dialog_bg">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="30dip"
android:paddingTop="10dip">
<ImageView
android:id="@+id/dialog_title_image"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/dialog_title_image"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_centerInParent="true"
android:text="Title"
android:layout_toRightOf="@id/dialog_title_image"
android:textColor="#000000"
android:textSize="30sp"/>
</RelativeLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="@drawable/lins"
android:layout_marginTop="5dip"/>
<TextView
android:id="@+id/message_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:text="This is a custom dialog"
android:layout_marginTop="10dip"
android:layout_marginLeft="30dip"/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip"
android:gravity="bottom|center_horizontal"
android:paddingBottom="10dip">
<Button
android:id="@+id/dialog_button_ok"
android:layout_alignParentLeft="true"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:text="确定"/>
<Button
android:id="@+id/dialog_button_cancel"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/dialog_button_ok"
android:layout_marginLeft="35dip"
android:text="取消"/>
</RelativeLayout>
</LinearLayout>
自定义Dialog样式:
<style name="MyDialog" parent="@android:Theme.Dialog">
<item name="android:windowFrame">@null</item>
<!-- 去掉系统自带的title -->
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/dialog_bg</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
Activity测试类:
package com.zzj.ui.dialogdemo;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;
import com.zzj.ui.R;
public class CustomDialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.custom_dialog_activity);
}
public void click(View v) {
switch (v.getId()) {
case R.id.dialog_btn:
Dialog dialog = new Dialog(this);
dialog.setTitle("对话框");
TextView textView = new TextView(this);
textView.setText("这是一个最简单的对话框!");
dialog.setContentView(textView);
dialog.setCancelable(true);// 按回退键是否可取消对话框
dialog.setCanceledOnTouchOutside(true);// 点击对话框外面是否取消对话框
dialog.show();
break;
case R.id.coustom_dialog_btn:
final MyDialog myDialog = new MyDialog(CustomDialogActivity.this);
myDialog.setOKClick(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(CustomDialogActivity.this, "删除成功!",
Toast.LENGTH_LONG).show();
myDialog.dismiss();
}
});
myDialog.setCancelClick(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(CustomDialogActivity.this, "您取消了删除!",
Toast.LENGTH_LONG).show();
myDialog.dismiss();
}
});
myDialog.setMessage("确定删除?");
myDialog.show();
break;
default:
break;
}
}
}
Activity布局文件:
<?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" >
<Button
android:id="@+id/dialog_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="弹出简单对话框" />
<Button
android:id="@+id/coustom_dialog_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="弹出自定义对话框" />
</LinearLayout>
运行效果:
1.系统自带的对话框。
2.自定义对话框。