自定義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> 
相關文章
相關標籤/搜索