public class ConfirmDialog extends DialogFragment {
private Button mCancelButton, mConfirmButton;
private TextView mTitle;
private String mTitleText;
private ConfirmResultListener mConfirmResultListener;
public interface ConfirmResultListener {
void onConfirm();
void onCancel();
}
public void setConfirmResultListener(ConfirmResultListener confirmResultListener) {
mConfirmResultListener = confirmResultListener;
}
public void setTitle(String titleText) {
if (mTitle != null) {
mTitle.setText(titleText);
}
mTitleText = titleText;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_confirm_dialog, container);
initView(view);
initListener();
return view;
}
private void initListener() {
mConfirmButton.setOnClickListener(mOnClickListener);
mCancelButton.setOnClickListener(mOnClickListener);
}
private View.OnClickListener mOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_dialog_confirm: {
if (mConfirmResultListener != null) {
mConfirmResultListener.onConfirm();
}
dismiss();
break;
}
case R.id.btn_dialog_cancel: {
if (mConfirmResultListener != null) {
mConfirmResultListener.onCancel();
}
dismiss();
break;
}
default: {
break;
}
}
}
};
private void initView(View view) {
if (TextUtils.isEmpty(mTitleText)) {
mTitleText = getString(R.string.unfollow_confirm);
}
mCancelButton = view.findViewById(R.id.btn_dialog_cancel);
mConfirmButton = view.findViewById(R.id.btn_dialog_confirm);
mTitle = view.findViewById(R.id.tv_dialog_title);
mTitle.setText(mTitleText);
}
@Override
public void onStart() {
super.onStart();
Dialog dialog = getDialog();
if (dialog != null) {
DisplayMetrics displayMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
dialog.getWindow().setLayout((int) (displayMetrics.widthPixels * 0.75), ViewGroup.LayoutParams.WRAP_CONTENT);
}
}
}
使用起来非常简单:
public class MainActivity extends AppCompatActivity {
private Button mBtn;
private ConfirmDialog mConfirmDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mBtn = findViewById(R.id.btn);
mBtn.setOnClickListener(mClickListener);
}
private View.OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn:
dialog();
break;
}
}
};
private void dialog() {
ConfirmDialog confirmDialog = getConfirmDialog();
confirmDialog.setConfirmResultListener(new ConfirmDialog.ConfirmResultListener() {
@Override
public void onConfirm() {
Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
}
});
confirmDialog.show(getSupportFragmentManager(), "confirm dialog");
}
private ConfirmDialog getConfirmDialog() {
if (mConfirmDialog == null) {
mConfirmDialog = new ConfirmDialog();
mConfirmDialog.setTitle("注册成功");
}
return mConfirmDialog;
}
}