自定义 对话框类:

public class AlertDialogUI {
   Context context;
   android.app.AlertDialog ad;
   TextView titleView;
   TextView messageView;
   TextView btn_sure, btn_cancle;

   public AlertDialogUI(Context context) {
      // TODO Auto-generated constructor stub
      try {
         this.context = context;
         LayoutInflater inflater = (LayoutInflater) context
               .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         if (ad == null) {
            ad = new android.app.AlertDialog.Builder(context).create();
         }
         if (!ad.isShowing()) {
            ad.show();
         }
         // 关键在下面的两行,使用window.setContentView,替换整个对话框窗口的布局
         // Window window = ad.getWindow();
         // window.setContentView(R.layout.alertdialog);
         View layout = inflater.inflate(R.layout.alertdialog, null);

         Window dialogWindow = ad.getWindow();
         DisplayMetrics metrics = new DisplayMetrics();
         ((Activity) context).getWindowManager().getDefaultDisplay()
               .getMetrics(metrics);
         int width = (int) ((metrics.widthPixels) * 0.8);
         WindowManager.LayoutParams layoutParams = ad.getWindow()
               .getAttributes();
         layoutParams.width = width;
         dialogWindow.setAttributes(layoutParams);

         ad.setContentView(layout, new LinearLayout.LayoutParams(
               LinearLayout.LayoutParams.WRAP_CONTENT,
               LinearLayout.LayoutParams.WRAP_CONTENT));

         titleView = (TextView) layout.findViewById(R.id.title);
         messageView = (TextView) layout.findViewById(R.id.message);
         btn_sure = (TextView) layout.findViewById(R.id.btn_sure);
         btn_cancle = (TextView) layout.findViewById(R.id.btn_cancle);
      } catch (Exception e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }

   public void showDialog() {
      if (null != ad && !ad.isShowing()) {
         ad.show();
      }
   }

   public void setDisMissListener() {

   }

   public void setTitle(int resId) {
      titleView.setVisibility(View.VISIBLE);
      titleView.setText(resId);
   }

   public void setTitle(String title) {
      titleView.setVisibility(View.VISIBLE);
      titleView.setText(title);
   }

   public void setMessage(int resId) {
      messageView.setText(resId);
   }

   public void setMessage(String message) {
      messageView.setText(message);
   }

   public void setCanceledOnTouchOutside(boolean flag) {
      ad.setCanceledOnTouchOutside(flag);
   }

   public void setCancleAble(boolean flag) {
      ad.setCancelable(flag);
   }

   /**
    * 设置按钮
    * 
    * @param text
    * @param listener
    */
   public void setPositiveButton(String text,
         final View.OnClickListener listener) {
      btn_sure.setText(text);
      btn_sure.setOnClickListener(listener);
   }

   /**
    * 设置按钮
    * 
    * @param text
    * @param listener
    */
   public void setNegativeButton(String text,
         final View.OnClickListener listener) {
      btn_cancle.setText(text);
      btn_cancle.setVisibility(View.VISIBLE);
      btn_cancle.setOnClickListener(listener);
   }
   /**
    * 关闭对话框
    */
   public void dismiss() {
      try {
         ad.dismiss();
      } catch (Exception e) {
         // TODO: handle exception
      }
   }
}


布局文件Layout: alertdialog 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <!-- 中间白色背景,两个TextView,标题和内容,留一个LinearLayout,在代码中根据调用动态加上按钮 -->

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="2dp"
        android:background="@xml/dialog_bg"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="10dp"
            android:gravity="center"
            android:text="@string/prompt"
            android:textColor="@color/txt_gray_dark"
            android:textSize="14sp" />

        <ImageView
            android:id="@+id/img_hx"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/line_hx" />

        <TextView
            android:id="@+id/message"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="5dp"
            android:gravity="center_horizontal"
            android:padding="10dp"
            android:text=""
            android:textColor="@color/color_new_secondary"
            android:textSize="14sp" />
        <!-- 在LinearLayout中加按钮 -->

        <View
            android:id="@+id/img_line002"
            android:layout_width="fill_parent"
            android:layout_height="1px"
            android:background="#DCDCDC" />

        <LinearLayout
            android:id="@+id/buttonLayout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/btn_cancle"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@drawable/ui_new_dialog_common_normal"
                    android:gravity="center_vertical|center_horizontal"
                    android:padding="10dp"
                    android:visibility="gone"
                    android:text="@string/cancel"
                    android:textColor="@color/white"
                    android:textSize="14sp" />

                <TextView
                    android:id="@+id/btn_sure"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@drawable/ui_new_dialog_common_pressed"
                    android:gravity="center_vertical|center_horizontal"
                    android:padding="10dp"
                    android:text="@string/confirm"
                    android:textColor="@color/white"
                    android:textSize="14sp" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

</RelativeLayout>

资源文件ui_new_dialog_common_normal 

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <!-- 描边 -->
            <stroke android:width="0px" android:color="@color/frame_stroke" />
            <!-- 填充 -->
            <solid android:color="@color/frame_stroke" />
            <!-- 圆角 -->
       <!--      <corners android:radius="@dimen/ui_new_dimen_radius" /> -->
        </shape>
    </item>
</layer-list>
ui_new_dialog_common_pressed
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <!-- 描边 -->
            <stroke android:width="0px" android:color="@color/frame_stroke" />
            <!-- 填充 -->
            <solid android:color="@color/ui_new_btn_common_normal_solid" />
            <!-- 圆角 -->
       <!--      <corners android:radius="@dimen/ui_new_dimen_radius" /> -->
        </shape>
    </item>
</layer-list>

 

                                                                                                                                                              -END