package com.electric.chargingpile.fragment; import android.app.Dialog; import android.os.Bundle; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.DialogFragment; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import com.electric.chargingpile.R; public class ReportParkingDialogFragment extends DialogFragment implements View.OnClickListener { public static final String TYPE_FIRST = "first"; public static final String TYPE_SECOND = "second"; public static final String TYPE_THIRD = "third"; private static Dialog mDialog; private String mType; private ConstraintLayout container; private ConstraintLayout first; private ImageView first_close; private ConstraintLayout second; private ImageView second_close; private Button cancel_report; private Button report; private ConstraintLayout third; private ImageView third_close; private OnReportParkingDialogFragmentListener reportParkingDialogFragmentListener; public static ReportParkingDialogFragment newInstance(String type) { Bundle args = new Bundle(); args.putSerializable("type", type); ReportParkingDialogFragment fragment = new ReportParkingDialogFragment(); fragment.setArguments(args); return fragment; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { mDialog = new Dialog(getActivity(), R.style.CenterDialog); mDialog.setCancelable(true); mDialog.setCanceledOnTouchOutside(true); mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); mDialog.setContentView(R.layout.fragment_dialog_report_parking); Window window = mDialog.getWindow(); WindowManager.LayoutParams layoutParams = window.getAttributes(); // 布局属性位于整个窗口底部 layoutParams.gravity = Gravity.CENTER; // 布局属性宽度填充整个窗口,默认是有margin的 layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; window.setAttributes(layoutParams); initDialog(); initListener(); return mDialog; } private void initDialog() { mType = (String)getArguments().get("type"); container = mDialog.findViewById(R.id.container); first = mDialog.findViewById(R.id.first); first_close = mDialog.findViewById(R.id.first_close); second = mDialog.findViewById(R.id.second); second_close = mDialog.findViewById(R.id.second_close); cancel_report = mDialog.findViewById(R.id.cancel_report); report = mDialog.findViewById(R.id.report); third = mDialog.findViewById(R.id.third); third_close = mDialog.findViewById(R.id.third_close); if (TYPE_FIRST.equals(mType)) { first.setVisibility(View.VISIBLE); second.setVisibility(View.GONE); third.setVisibility(View.GONE); } else if (TYPE_SECOND.equals(mType)) { first.setVisibility(View.GONE); second.setVisibility(View.VISIBLE); third.setVisibility(View.GONE); } else { first.setVisibility(View.GONE); second.setVisibility(View.GONE); third.setVisibility(View.VISIBLE); } } private void initListener() { container.setOnClickListener(this); first.setOnClickListener(this); first_close.setOnClickListener(this); second.setOnClickListener(this); second_close.setOnClickListener(this); cancel_report.setOnClickListener(this); report.setOnClickListener(this); third.setOnClickListener(this); third_close.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.container: mDialog.dismiss(); break; case R.id.first_close: mDialog.dismiss(); break; case R.id.second_close: mDialog.dismiss(); break; case R.id.cancel_report: mDialog.dismiss(); break; case R.id.report: if (reportParkingDialogFragmentListener != null) { reportParkingDialogFragmentListener.report(); } mDialog.dismiss(); break; case R.id.third_close: mDialog.dismiss(); break; } } public interface OnReportParkingDialogFragmentListener { void report(); } public void setOnReportParkingDialogFragmentListener(OnReportParkingDialogFragmentListener listener) { this.reportParkingDialogFragmentListener = listener; } }