代码部分
public class CustomDialog extends Dialog {
private View dialogContent;
private TextView titleView;
public View getDialogContent() {
return dialogContent;
}
private CustomDialog(Context context, int theme) {
super(context, theme);
}
public void setTitle(String title) {
if (null != titleView)
titleView.setText(title);
}
public static void showMessage(String message) {
showMessage(message, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
}
public static void showMessage(String message, OnClickListener listener) {
new CustomDialog.Builder(BaseActivity.currentActivity())
.setTitle(Constant.STR_PROMPT)
.setCancelable(true, null)
.setMessage(message)
.setPositiveButton(R.string.dialog_ok, listener).create().show();
}
public static class Builder {
private Context context;
private String title;
private String message;
private String positiveBtnText;
private String negativeBtnText;
private View contentView;
boolean cancelable = false;
OnCancelListener onCancelListener;
OnDismissListener onDismissListener;
private OnClickListener positiveBtnOnClickedListener;
private OnClickListener negativeBtnOnClickedListener;
public Builder(Context context) {
this.context = context;
}
public Builder setCancelable(boolean cancelable, OnCancelListener listener) {
this.cancelable = cancelable;
this.onCancelListener = listener;
return this;
}
public Builder setOnDismissListener(OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
return this;
}
public Builder setTitle(String title) {
this.title = title;
return this;
}
public Builder setTitle(int titleId) {
this.title = (String) context.getText(titleId);
return this;
}
public Builder setMessage(String message) {
this.message = message;
return this;
}
public Builder setMessage(int messageId) {
this.message = (String) context.getText(messageId);
return this;
}
public Builder setContentView(View contentView) {
this.contentView = contentView;
return this;
}
public Builder setContentView(int layoutId) {
this.contentView = ((LayoutInflater) context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE)).inflate(layoutId, null);
return this;
}
public Builder setPositiveButton(String text, OnClickListener listener) {
this.positiveBtnText = text;
this.positiveBtnOnClickedListener = listener;
return this;
}
public Builder setPositiveButton(int textId, OnClickListener listener) {
this.positiveBtnText = (String) context.getText(textId);
this.positiveBtnOnClickedListener = listener;
return this;
}
public Builder setNegativeButton(String text, OnClickListener listener) {
this.negativeBtnText = text;
this.negativeBtnOnClickedListener = listener;
return this;
}
public Builder setNegativeButton(int textId, OnClickListener listener) {
this.negativeBtnText = (String) context.getText(textId);
this.negativeBtnOnClickedListener = listener;
return this;
}
public CustomDialog create() {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final CustomDialog dialog = new CustomDialog(context, R.style.CustomDialog);
View dialogView = inflater.inflate(R.layout.custom_dialog, null);
dialog.addContentView(dialogView, new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
TextView titleTv = (TextView) dialogView.findViewById(R.id.custom_dialog_title);
dialog.titleView = titleTv;
TextView messageTv = (TextView) dialogView.findViewById(R.id.custom_dialog_content_text);
Button positiveBtn = (Button) dialogView.findViewById(R.id.custom_dialog_positive_button);
Button negativeBtn = (Button) dialogView.findViewById(R.id.custom_dialog_negative_button);
LinearLayout contentLayout = (LinearLayout) dialogView.findViewById(R.id.custom_dialog_content);
dialog.setCancelable(cancelable);
if (cancelable && null != onCancelListener)
dialog.setOnCancelListener(onCancelListener);
if ( null != onDismissListener)
dialog.setOnDismissListener(onDismissListener);
// 标题
if (!TextUtils.isEmpty(title)) {
titleTv.setVisibility(View.VISIBLE);
dialogView.findViewById(R.id.custom_dialog_top_line).setVisibility(View.VISIBLE);
titleTv.setText(title);
} else {
dialogView.findViewById(R.id.custom_dialog_top_line).setVisibility(View.INVISIBLE);
titleTv.setVisibility(View.GONE);
}
// Message Or ContentView
if (!TextUtils.isEmpty(message)) {
messageTv.setText(message);
dialog.dialogContent = messageTv;
} else if (contentView != null) {
contentLayout.removeAllViews();
contentLayout.addView(contentView, new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
dialog.dialogContent = contentView;
}
// PositiveButton or NegativeButton
if (!TextUtils.isEmpty(positiveBtnText) || !TextUtils.isEmpty(negativeBtnText)) { // 有按钮
dialogView.findViewById(R.id.custom_dialog_bottom_line).setVisibility(View.VISIBLE);
if (!TextUtils.isEmpty(positiveBtnText)) {
positiveBtn.setVisibility(View.VISIBLE);
positiveBtn.setText(positiveBtnText);
if (positiveBtnOnClickedListener != null) {
positiveBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
positiveBtnOnClickedListener.onClick(dialog, Dialog.BUTTON_POSITIVE);
}
});
}
} else {
positiveBtn.setVisibility(View.GONE);
}
if (!TextUtils.isEmpty(negativeBtnText)) {
negativeBtn.setVisibility(View.VISIBLE);
negativeBtn.setText(negativeBtnText);
if (negativeBtnOnClickedListener != null) {
negativeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
negativeBtnOnClickedListener.onClick(dialog, Dialog.BUTTON_NEGATIVE);
}
});
}
} else {
negativeBtn.setVisibility(View.GONE);
}
if (!(!TextUtils.isEmpty(positiveBtnText) && !(TextUtils.isEmpty(negativeBtnText)))) {
dialogView.findViewById(R.id.custom_dialog_button_line).setVisibility(View.GONE);
} else {
dialogView.findViewById(R.id.custom_dialog_button_line).setVisibility(View.VISIBLE);
}
} else { // 无按钮
dialogView.findViewById(R.id.custom_dialog_button_line).setVisibility(View.GONE);
dialogView.findViewById(R.id.custom_dialog_bottom_line).setVisibility(View.INVISIBLE);
dialogView.findViewById(R.id.custom_dialog_button_layout).setVisibility(View.GONE);
}
return dialog;
}
}
}
布局文件
style="@style/CustomDialogBackground"
android:minWidth="@dimen/min_width_dialog" >
android:id="@+id/custom_dialog_title"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:textColor="@android:color/black"
android:textSize="@dimen/title_small"
android:gravity="center" />
android:id="@+id/custom_dialog_top_line"
android:layout_width="match_parent"
android:layout_height="@dimen/sigle_pexls"
android:background="@color/gray" />
android:id="@+id/custom_dialog_content"
android:layout_width="wrap_content"
android:layout_height="0px"
android:gravity="center"
android:padding="@dimen/medium"
android:minHeight="@dimen/min_height_dialog_content"
android:layout_weight="1">
android:id="@+id/custom_dialog_content_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxWidth="240dp"
android:layout_gravity="center_vertical"
android:textColor="@color/font_black"
android:textSize="@dimen/text_noraml"/>
android:id="@+id/custom_dialog_bottom_line"
android:layout_width="match_parent"
android:layout_height="@dimen/sigle_pexls"
android:background="@color/gray" />
android:id="@+id/custom_dialog_button_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:id="@+id/custom_dialog_positive_button"
style="@style/CustomDialogButton"/>
android:id="@+id/custom_dialog_button_line"
android:layout_width="@dimen/sigle_pexls"
android:layout_height="match_parent"
android:background="@color/gray"/>
android:id="@+id/custom_dialog_negative_button"
style="@style/CustomDialogButton"/>
样式
wrap_content
wrap_content
@drawable/rectangle_write
center
vertical