本文共 4935 字,大约阅读时间需要 16 分钟。
将两个自定义的AlertDialog封装成工具类,直接拿来用!
先上图:其中样式一用来弹出提示消息,样式二用来做简单的选择很合适。
AlertDialogUtils.java
public class AlertDialogUtils { public static AlertDialogUtils getInstance() { return new AlertDialogUtils(); } /** * 弹出自定义样式的AlertDialog * * @param context 上下文 * @param title AlertDialog的标题 * @param tv 点击弹出框选择条目后,要改变文字的TextView * @param args 作为弹出框中item显示的字符串数组 */ public void showAlertDialog(Context context, String title, final TextView tv, final Listargs) { AlertDialog.Builder builder = new AlertDialog.Builder(context); final AlertDialog dialog = builder.create(); dialog.show(); View view = LayoutInflater.from(context).inflate(R.layout.alert_dialog_salary, null); TextView tvTitle = (TextView) view.findViewById(R.id.tv_title_alert_dialog_salary); ListView list = (ListView) view.findViewById(R.id.lv_alert_dialog_salary); tvTitle.setText(title); ListAdapter adpter = new ArrayAdapter (context, R.layout.item_listview_salary, R.id.tv_item_listview_salary, args); list.setAdapter(adpter); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { String str = args.get(position); tv.setText(str); if (onDialogItemSelectListener != null) { onDialogItemSelectListener.onItemSelect(str); } dialog.dismiss(); } }); dialog.getWindow().setContentView(view); } private OnDialogItemSelectListener onDialogItemSelectListener; public void setOnDialogItemSelectListener(AlertDialogUtils.OnDialogItemSelectListener onDialogItemSelectListener) { this.onDialogItemSelectListener = onDialogItemSelectListener; } /** * item选中回调接口 */ public interface OnDialogItemSelectListener { /** * item选中回调方法 * * @param str 选中的item中的String */ void onItemSelect(String str); } /** * 带有确认取消按钮的自定义dialog * * @param context 上下文 * @param message 显示的信息 */ public static void showConfirmDialog(Context context, String message) { AlertDialog.Builder builder = new AlertDialog.Builder(context); final AlertDialog alertDialog = builder.create(); alertDialog.show(); View view = View.inflate(context, R.layout.view_alert_dialog_confirm, null); TextView tvMsg = (TextView) view.findViewById(R.id.tv_message_dialog); TextView tvCancel = (TextView) view.findViewById(R.id.tv_cancel_dialog); TextView tvConfirm = (TextView) view.findViewById(R.id.tv_confirm_dialog); tvMsg.setText(message); tvCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onButtonClickListener.onNegativeButtonClick(alertDialog); } }); tvConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onButtonClickListener.onPositiveButtonClick(alertDialog); } }); alertDialog.getWindow().setContentView(view); } private static OnButtonClickListener onButtonClickListener; public void setOnButtonClickListener(OnButtonClickListener onButtonClickListener) { this.onButtonClickListener = onButtonClickListener; } /** * 按钮点击回调接口 */ public interface OnButtonClickListener { /** * 确定按钮点击回调方法 * * @param dialog 当前 AlertDialog,传入它是为了在调用的地方对 dialog 做操作,比如 dismiss() * 也可以在该工具类中直接 dismiss() 掉,就不用将 AlertDialog 对象传出去了 */ void onPositiveButtonClick(AlertDialog dialog); /** * 取消按钮点击回调方法 * * @param dialog 当前AlertDialog */ void onNegativeButtonClick(AlertDialog dialog); }}
样式一:带确定取消按钮的布局文件 view_alert_dialog_confirm.xml
样式二:带标题的布局文件 alert_dialog_salary.xml
里面的背景选择器比较简单就不贴了。
样式一:
AlertDialogUtils utils = AlertDialogUtils.getInstance();utils.showConfirmDialog(this, "确定删除本条通知公告吗?");//按钮点击监听utils.setOnButtonClickListener(new AlertDialogUtils.OnButtonClickListener() { @Override public void onPositiveButtonClick(AlertDialog dialog) { dialog.dismiss(); //做自己的操作 } @Override public void onNegativeButtonClick(AlertDialog dialog) { dialog.dismiss(); }});
样式二:
//获取 AlertDialogUtils 对象AlertDialogUtils alertDialogUtils = AlertDialogUtils.getInstance();//传入参数:tvDepartment是选择完之后要改变文字内容的TextViewalertDialogUtils.showAlertDialog(ConferenceSendActivity.this, "请选择部门", tvDepartment, names);
转载地址:http://tvvpi.baihongyu.com/