一个可以重复使用的消息提示确认框,不用每次创建对话框,获取对话框的确定以及取消按钮,减少代码量,还能体现很好的封装性。
java代码,创建自定义对话框基础类:
package com.xjw.translate;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
/**
* 项目名称:translate
* 实现功能:
* 类名称:ConfirmDialog
* 类描述:(该类的主要功能)
* 创建人:徐纪伟
* E-mail: xujiwei558@126.com
* 创建时间:2014年10月19日 下午7:28:39
* 修改人:
* 修改时间:
* 修改备注:
* @version
*/
public class ConfirmDialog extends Dialog implements android.view.View.OnClickListener{
private Button btnOk,btnCancel;
private TextView tvTitle,tvMessgae;
private String title, message;
private OnOkButtonClickListener listener;
public ConfirmDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public ConfirmDialog(Context context, String title, String message, OnOkButtonClickListener listener) {
//设置对提示框的样式,比如去除边框背景,添加自定义图片等
super(context,R.style.ConfirmDialog);
this.title = title;
this.message = message;
this.listener = listener;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置提示框的样式布局
setContentView(R.layout.confirm_dialog);
btnOk = (Button)findViewById(R.id.btn_ok);
btnCancel = (Button)findViewById(R.id.btn_cancel);
btnOk.setOnClickListener(this);
btnCancel.setOnClickListener(this);
tvTitle = (TextView)findViewById(R.id.tv_confirm_title);
tvMessgae = (TextView)findViewById(R.id.tv_confirm_messgae);
tvTitle.setText(title);
tvMessgae.setText(message);
}
/**
* 定义确定按钮和取消按钮的事件
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_ok:
//点击确定按钮时,触发点击回调事件
listener.OnOkButtonClick();
break;
case R.id.btn_cancel:
dismiss();
break;
default:
break;
}
}
/**
* @类名称: OnOkButtonClickListener
* @描述: 使用接口回调的方式监听确定按钮点击事件
* @throws
* @author 徐纪伟
* 2014年10月24日下午10:12:29
*/
public interface OnOkButtonClickListener{
public void OnOkButtonClick();
}
public Button getBtnOk() {
return btnOk;
}
public void setBtnOk(Button btnOk) {
this.btnOk = btnOk;
}
public Button getBtnCancel() {
return btnCancel;
}
public void setBtnCancel(Button btnCancel) {
this.btnCancel = btnCancel;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public OnOkButtonClickListener getListener() {
return listener;
}
public void setListener(OnOkButtonClickListener listener) {
this.listener = listener;
}
}
提示框布局文件confirm_dialog.xml,里面包含标题,显示内容,以及两个按钮:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/exit_layout" android:layout_width="280dp" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical"> <TextView android:id="@+id/tv_confirm_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:padding="5dp" android:textColor="#333" android:textSize="20sp" android:text="提示信息" /> <TextView android:id="@+id/tv_confirm_messgae" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#333" android:layout_marginTop="1dp" android:padding="10dp" android:textSize="16sp" android:gravity="center_horizontal" android:text="提示信息" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="58dp" android:layout_marginBottom="8dp" > <Button android:id="@+id/btn_ok" android:layout_width="110dp" android:layout_height="wrap_content" android:text="是" android:textSize="16sp" android:textColor="#fff" android:background="@drawable/btn_selector" android:gravity="center" android:onClick="exitbutton0" /> <Button android:id="@+id/btn_cancel" android:layout_width="110dp" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="否" android:textSize="16sp" android:textColor="#333" android:background="@drawable/selector_btn_cancel" android:gravity="center" android:onClick="exitbutton1" /> </LinearLayout> </LinearLayout>
下面是提示框的样式:
<style name="ConfirmDialog" parent="@android:Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@drawable/confirm_dialog_bg2</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> </style>
使用方法:
ConfirmDialog confirmDialog = new ConfirmDialog(context, resource.getString(R.string.confirm_title_normal), resource.getString(R.string.clear_history), new ConfirmDialog.OnOkButtonClickListener() {
@Override
public void OnOkButtonClick() {
//此处可以填写确定按钮的事件响应
}
});
confirmDialog.show();
效果预览: