|
|
@@ -0,0 +1,192 @@
|
|
|
+package com.mgtech.base_library.util;
|
|
|
+
|
|
|
+import android.app.AlertDialog;
|
|
|
+import android.app.Dialog;
|
|
|
+import android.content.Context;
|
|
|
+import android.content.DialogInterface;
|
|
|
+import android.view.LayoutInflater;
|
|
|
+import android.view.View;
|
|
|
+import android.widget.LinearLayout;
|
|
|
+import android.widget.TextView;
|
|
|
+
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+
|
|
|
+import com.mgtech.base_library.R;
|
|
|
+/**
|
|
|
+ * @ProjectName: TUA
|
|
|
+ * @Package: com.tennor.base_library.utils
|
|
|
+ * @ClassName: CustomDialog
|
|
|
+ * @Description: java类作用描述
|
|
|
+ * @Author: 牛松涛
|
|
|
+ * @CreateDate: 2020/4/1 13:06
|
|
|
+ * @UpdateUser: 更新者:
|
|
|
+ * @UpdateDate: 2020/4/1 13:06
|
|
|
+ * @UpdateRemark: 更新说明:
|
|
|
+ * @Version: 1.0
|
|
|
+ */
|
|
|
+public class CustomDialog extends Dialog {
|
|
|
+
|
|
|
+ public CustomDialog(Context context) {
|
|
|
+ super(context);
|
|
|
+ }
|
|
|
+
|
|
|
+ public CustomDialog(Context context, int theme) {
|
|
|
+ super(context, theme);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static class Builder {
|
|
|
+ private Context context;
|
|
|
+ private String title;
|
|
|
+ private String message;
|
|
|
+ private String positiveButtonText;
|
|
|
+ private String negativeButtonText;
|
|
|
+ private View contentView;
|
|
|
+ private DialogInterface.OnClickListener positiveButtonClickListener;
|
|
|
+ private DialogInterface.OnClickListener negativeButtonClickListener;
|
|
|
+
|
|
|
+ public Builder(Context context) {
|
|
|
+ this.context = context;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Builder setMessage(String message) {
|
|
|
+ this.message = message;
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Set the Dialog message from resource
|
|
|
+ *
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Builder setMessage(int message) {
|
|
|
+ this.message = (String) context.getText(message);
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Set the Dialog title from resource
|
|
|
+ *
|
|
|
+ * @param title
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Builder setTitle(int title) {
|
|
|
+ this.title = (String) context.getText(title);
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Set the Dialog title from String
|
|
|
+ *
|
|
|
+ * @param title
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+
|
|
|
+ public Builder setTitle(String title) {
|
|
|
+ this.title = title;
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Builder setContentView(View v) {
|
|
|
+ this.contentView = v;
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Set the positive button resource and it's listener
|
|
|
+ *
|
|
|
+ * @param positiveButtonText
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ 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.Theme_AppCompat_Light_Dialog_Alert);
|
|
|
+ View layout = inflater.inflate(R.layout.dialog_ask, null);
|
|
|
+ dialog.addContentView(layout, new LinearLayout.LayoutParams(
|
|
|
+ LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
|
|
|
+ // set the dialog title
|
|
|
+ ((TextView) layout.findViewById(R.id.dialog_title)).setText(title);
|
|
|
+ // set the confirm button
|
|
|
+ if (positiveButtonText != null) {
|
|
|
+ ((TextView) layout.findViewById(R.id.dialog_positive))
|
|
|
+ .setText(positiveButtonText);
|
|
|
+ if (positiveButtonClickListener != null) {
|
|
|
+ layout.findViewById(R.id.dialog_positive)
|
|
|
+ .setOnClickListener(new View.OnClickListener() {
|
|
|
+ public void onClick(View v) {
|
|
|
+ positiveButtonClickListener.onClick(dialog,
|
|
|
+ DialogInterface.BUTTON_POSITIVE);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // if no confirm button just set the visibility to GONE
|
|
|
+ layout.findViewById(R.id.dialog_positive).setVisibility(
|
|
|
+ View.GONE);
|
|
|
+ }
|
|
|
+ // set the cancel button
|
|
|
+ if (negativeButtonText != null) {
|
|
|
+ ((TextView) layout.findViewById(R.id.dialog_negative))
|
|
|
+ .setText(negativeButtonText);
|
|
|
+ if (negativeButtonClickListener != null) {
|
|
|
+ layout.findViewById(R.id.dialog_negative)
|
|
|
+ .setOnClickListener(new View.OnClickListener() {
|
|
|
+ public void onClick(View v) {
|
|
|
+ negativeButtonClickListener.onClick(dialog,
|
|
|
+ DialogInterface.BUTTON_NEGATIVE);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // if no confirm button just set the visibility to GONE
|
|
|
+ layout.findViewById(R.id.dialog_negative).setVisibility(
|
|
|
+ View.GONE);
|
|
|
+ }
|
|
|
+ // set the content message
|
|
|
+ if (message != null) {
|
|
|
+ ((TextView) layout.findViewById(R.id.dialog_message)).setText(message);
|
|
|
+ } else if (contentView != null) {
|
|
|
+ // if no message set
|
|
|
+ // add the contentView to the dialog body
|
|
|
+ ((LinearLayout) layout.findViewById(R.id.content))
|
|
|
+ .removeAllViews();
|
|
|
+ ((LinearLayout) layout.findViewById(R.id.content))
|
|
|
+ .addView(contentView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
|
|
|
+ }
|
|
|
+ dialog.setContentView(layout);
|
|
|
+ return dialog;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|