自定义dialog

public class CustomDialog extends Dialog {
	    
	public CustomDialog(Context context, int theme) {
	        super(context, theme);
	    }
  
	    public CustomDialog(Context context) {
	        super(context);
	    }

	    public static class Builder {
	  
	        private Context context;
	        private String title;
	        private String message;
	        private String positiveButtonText;
	        private String negativeButtonText;
	        private View contentView;
	        private Drawable icon;
	  
	        private DialogInterface.OnClickListener
                        positiveButtonClickListener,
	                        negativeButtonClickListener;
  
	        public Builder(Context context) {
	            this.context = context;
	        }
	  

        public Builder setMessage(String message) {
	            this.message = message;
	            return this;
        }
        private Builder setIcon(Drawable icon){
        	this.icon=icon;
        	return this;
        }
 

	        public Builder setMessage(int message) {
	            this.message = (String) context.getText(message);
	            return this;
        }
	  


	        public Builder setTitle(int title) {
	            this.title = (String) context.getText(title);
	            return this;
	        }
  
        
	        public Builder setTitle(String title) {
	            this.title = title;
            return this;
	        }
	  

	        public Builder setContentView(View v) {
	            this.contentView = v;
            return this;
	        }
  
	
        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;
	        }
	  
	        
	        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.krp_dialog, 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 {
	                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 {
	                layout.findViewById(R.id.negativeButton).setVisibility(
	                        View.GONE);
            }
	            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.WRAP_CONTENT,
	                                        LayoutParams.WRAP_CONTENT));
	            }
	            dialog.setContentView(layout);
            return dialog;
	        }
	  
	    }
	  
	}
<style name="Dialog" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
    </style>
  
    <style name="DialogText">
        <item name="android:textColor">#FF000000</item>
        <item name="android:textSize">12sp</item>
    </style>
  
 
 
    <style name="DialogText.Title">
        <item name="android:textSize">17sp</item>
        <item name="android:textStyle">bold</item>
        
    </style>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="280dip"
    android:layout_height="wrap_content"
    android:background="@drawable/info_bg"
    android:orientation="vertical" >


    <LinearLayout
        android:layout_width="280dip"
        android:layout_height="60dip"
        android:background="#fff"
        android:orientation="vertical" >


        <LinearLayout
            android:layout_width="280dip"
            android:layout_height="55dip"
            android:background="#fff"
            android:orientation="horizontal" >


            <ImageView
                android:id="@+id/dialog_image"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />


            <TextView
                android:id="@+id/title"
                style="@style/DialogText.Title"
                android:layout_width="wrap_content"
                android:layout_height="35dip"
                android:layout_gravity="center_horizontal" />
        </LinearLayout>


        <View
            android:layout_width="280dip"
            android:layout_height="1dip"
            android:background="#aaa" />
    </LinearLayout>


    <LinearLayout
        android:id="@+id/content"
        android:layout_width="280dip"
        android:layout_height="wrap_content"
        android:background="#fff"
        android:orientation="vertical" >


        <EditText
            android:id="@+id/message"
            style="@style/DialogText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="5dip" />


        <View
            android:layout_width="280dip"
            android:layout_height="1dip"
            android:background="#aaa" />
    </LinearLayout>


    <LinearLayout
        android:layout_width="280dip"
        android:layout_height="wrap_content"
        android:background="#fff"
        android:orientation="horizontal" >


        <Button
            android:id="@+id/positiveButton"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dip"
            android:layout_weight="1"
            android:singleLine="true" />


        <Button
            android:id="@+id/negativeButton"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dip"
            android:layout_weight="1"
            android:singleLine="true" />
    </LinearLayout>


</LinearLayout>  
 
 
 
 
 
 

你可能感兴趣的:(dialog)