自定义alertDialog

最近做一个android应用,发现android自带的alertDialog太丑了,想进行改造,开始想到样式,经过一番尝试,失败。。然后想到皮肤,也不行。后来想到一个极为简单的方法,继承重写。。。

然后样子就成下图那样了。
代码:
public class CustomAlertDialog extends AlertDialog.Builder {
	LayoutInflater inflater;
	View container;
	TextView tx_title;
	TextView tx_message;
	Context mContext;
	View cancel;
	AlertDialog alertDialog;
	View ok;

	public CustomAlertDialog(Context context,String title,String msg) {
		super(context);
		mContext = context;
		inflater = (LayoutInflater) context
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		container = inflater.inflate(R.layout.widget_custom_alertdialog, null);
		setView(container);

		cancel = container.findViewById(R.id.cancel);
		ok = container.findViewById(R.id.ok);
		tx_title = (TextView) container.findViewById(R.id.title);
		tx_message = (TextView) container.findViewById(R.id.message);
		if(title==null){
			title="友情提示";
		}
		tx_title.setText(title);
		tx_message.setText(msg);
 		cancel.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				alertDialog.dismiss();
			}
		});
		
	}
	public Builder setNegativeButton(CharSequence text, final OnClickListener listener) {
		cancel.setVisibility(View.VISIBLE);
		cancel.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				listener.onClick(alertDialog, 0);
				alertDialog.dismiss();
			}
		});
		return this;
	}
	public Builder setPositiveButton(final OnClickListener listener) {
		ok.setVisibility(View.VISIBLE);
		ok.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				listener.onClick(alertDialog, 0);
			}
		});
		return this;
	}
	@Override
	public AlertDialog create() {
		alertDialog= super.create();
		return alertDialog;
	}
}





使用:
 		 new CustomAlertDialog(cont, null, "退出程序?")
				.setPositiveButton(new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						dialog.dismiss();
						AppManager.getAppManager().AppExit(cont);
					}
				}).create().show();;
	}

和传统方式没区别。。。

猜你喜欢

转载自zwcan241.iteye.com/blog/2084235