自定义 对话框类:
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