• Android自定义Dialog(美化界面)


    前言:在做项目的时候,发现dialog界面太丑陋,从csdn上下载了一份自定义dialog的源码,在他的基础上对界面进行美化...有需要的朋友可以直接拿走


    效果图如下:



    主要代码:

    /**
     * 自定义dialog
     * @author ansen
     */
    public class CustomDialog extends Dialog {
    	public CustomDialog(Context context) {
    		super(context);
    	}
    
    	public CustomDialog(Context context, int theme) {
    		super(context, theme);
    	}
    
    	public static class Builder {
    		private Context context;
    		private String title;
    		private String message;
    		private String positiveButtonText;
    		private String negativeButtonText;
    		private View contentView;
    		private DialogInterface.OnClickListener positiveButtonClickListener;
    		private DialogInterface.OnClickListener negativeButtonClickListener;
    
    		public Builder(Context context) {
    			this.context = context;
    		}
    
    		public Builder setMessage(String message) {
    			this.message = message;
    			return this;
    		}
    
    		/**
    		 * Set the Dialog message from resource
    		 * @param title
    		 * @return
    		 */
    		public Builder setMessage(int message) {
    			this.message = (String) context.getText(message);
    			return this;
    		}
    
    		/**
    		 * Set the Dialog title from resource
    		 * @param title
    		 * @return
    		 */
    		public Builder setTitle(int title) {
    			this.title = (String) context.getText(title);
    			return this;
    		}
    
    		/**
    		 * Set the Dialog title from String
    		 * @param title
    		 * @return
    		 */
    
    		public Builder setTitle(String title) {
    			this.title = title;
    			return this;
    		}
    
    		public Builder setContentView(View v) {
    			this.contentView = v;
    			return this;
    		}
    
    		/**
    		 * Set the positive button resource and it's listener
    		 * @param positiveButtonText
    		 * @return
    		 */
    		public Builder setPositiveButton(int positiveButtonText,
    				DialogInterface.OnClickListener listener) {
    			this.positiveButtonText = (String) context
    					.getText(positiveButtonText);
    			this.positiveButtonClickListener = listener;
    			return this;
    		}
    
    		public Builder setPositiveButton(String positiveButtonText,
    				DialogInterface.OnClickListener listener) {
    			this.positiveButtonText = positiveButtonText;
    			this.positiveButtonClickListener = listener;
    			return this;
    		}
    
    		public Builder setNegativeButton(int negativeButtonText,
    				DialogInterface.OnClickListener listener) {
    			this.negativeButtonText = (String) context
    					.getText(negativeButtonText);
    			this.negativeButtonClickListener = listener;
    			return this;
    		}
    
    		public Builder setNegativeButton(String negativeButtonText,
    				DialogInterface.OnClickListener listener) {
    			this.negativeButtonText = negativeButtonText;
    			this.negativeButtonClickListener = listener;
    			return this;
    		}
            
    		//创建dialog对象   主要就是这个方法,加载自定义布局文件
    		public CustomDialog create() {
    			LayoutInflater inflater = (LayoutInflater) context
    					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    			// instantiate the dialog with the custom Theme
    			final CustomDialog dialog = new CustomDialog(context,
    					R.style.Dialog);
    			View layout = inflater.inflate(R.layout.dialog_normal_layout, null);
    			dialog.addContentView(layout, new LayoutParams(
    					LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    			// set the dialog title
    			((TextView) layout.findViewById(R.id.title)).setText(title);
    			// set the confirm button
    			if (positiveButtonText != null) {
    				((Button) layout.findViewById(R.id.positiveButton))
    						.setText(positiveButtonText);
    				if (positiveButtonClickListener != null) {
    					((Button) layout.findViewById(R.id.positiveButton))
    							.setOnClickListener(new View.OnClickListener() {
    								public void onClick(View v) {
    									positiveButtonClickListener.onClick(dialog,
    											DialogInterface.BUTTON_POSITIVE);
    								}
    							});
    				}
    			} else {
    				// if no confirm button just set the visibility to GONE
    				layout.findViewById(R.id.positiveButton).setVisibility(
    						View.GONE);
    			}
    			// set the cancel button
    			if (negativeButtonText != null) {
    				((Button) layout.findViewById(R.id.negativeButton))
    						.setText(negativeButtonText);
    				if (negativeButtonClickListener != null) {
    					((Button) layout.findViewById(R.id.negativeButton))
    							.setOnClickListener(new View.OnClickListener() {
    								public void onClick(View v) {
    									negativeButtonClickListener.onClick(dialog,
    											DialogInterface.BUTTON_NEGATIVE);
    								}
    							});
    				}
    			} else {
    				// if no confirm button just set the visibility to GONE
    				layout.findViewById(R.id.negativeButton).setVisibility(
    						View.GONE);
    			}
    			// set the content message
    			if (message != null) {
    				((TextView) layout.findViewById(R.id.message)).setText(message);
    			} else if (contentView != null) {
    				((LinearLayout) layout.findViewById(R.id.content))
    						.removeAllViews();
    				((LinearLayout) layout.findViewById(R.id.content)).addView(
    						contentView, new LayoutParams(LayoutParams.FILL_PARENT,
    								LayoutParams.FILL_PARENT));
    			}
    			dialog.setContentView(layout);
    			return dialog;
    		}
    
    	}
    }


    4.Activity中如何调用:

    		CustomDialog.Builder builder = new CustomDialog.Builder(this);
    		builder.setMessage("这个就是自定义的提示框");
    		builder.setTitle("提示");
    		builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    			public void onClick(DialogInterface dialog, int which) {
    				dialog.dismiss();
    				//设置你的操作事项
    			}
    		});
    
    		builder.setNegativeButton("取消",
    				new android.content.DialogInterface.OnClickListener() {
    					public void onClick(DialogInterface dialog, int which) {
    						dialog.dismiss();
    					}
    				});
    
    		builder.create().show();


    点击下载源码

  • 相关阅读:
    CentOS8安装Mysql5.7
    CentOS8搭建FTP服务器
    CentOS8安装jdk1.8
    基于可穿戴设备的医疗监护系统
    air530GPS数据通过air202上传阿里云
    bzoj2594: [Wc2006]水管局长数据加强版
    bzoj3091: 城市旅行
    Problem A. Array Factory XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016
    hdu5716
    bzoj2002: [Hnoi2010]Bounce 弹飞绵羊
  • 原文地址:https://www.cnblogs.com/yishaochu/p/5078631.html
Copyright © 2020-2023  润新知