1,首先编写layout文件mmp_dialog_layout.xml:
文字资源 /values/string.xml
温馨提示
确定
取消 行,途径%d个城市,游
2,自定义MMPDialog.java
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AlertDialog;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.csair.mmpmobile.R;
public class MMPDialog {
public interface Onclick {
void onPositive();
void onNegative();
}
static String str_dialog_title = "", str_dialog_content = "", str_sure = "", str_cancle = "";
public static MMPDialogImp build(FragmentActivity activity) {
return new MMPDialogImp().setActivity(activity);
}
public static class MMPDialogImp extends DialogFragment {
FragmentActivity activity;
private Onclick onclick;
TextView tv_dialog_title, tv_dialog_content, tv_sure, tv_cancle;
private MMPDialogImp setActivity(FragmentActivity activity) {
this.activity = activity;
return this;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.mmp_dialog_layout, null);
tv_dialog_title = view.findViewById(R.id.tv_dialog_title);
tv_dialog_content = view.findViewById(R.id.tv_dialog_content);
tv_sure = view.findViewById(R.id.tv_sure);
tv_cancle = view.findViewById(R.id.tv_cancle);
if (!TextUtils.isEmpty(str_dialog_title)) {
tv_dialog_title.setText(str_dialog_title);
}
if (!TextUtils.isEmpty(str_dialog_content)) {
tv_dialog_content.setText(str_dialog_content);
}
if (!TextUtils.isEmpty(str_sure)) {
tv_sure.setText(str_sure);
}
if (!TextUtils.isEmpty(str_cancle)) {
tv_cancle.setText(str_cancle);
}
if (onclick != null) {
tv_sure.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onclick.onPositive();
dismiss();
}
});
tv_cancle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onclick.onNegative();
dismiss();
}
});
}
builder.setView(view);
return builder.create();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
@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.9),
ViewGroup.LayoutParams.WRAP_CONTENT);
}
}
@Override
public void onDestroy() {
super.onDestroy();
}
public MMPDialogImp setTitle(String str) {
str_dialog_title = str;
return this;
}
public MMPDialogImp setContent(String str) {
str_dialog_content = str;
return this;
}
public MMPDialogImp setNegative(String str) {
str_sure = str;
return this;
}
public MMPDialogImp setPositive(String str) {
str_cancle = str;
return this;
}
public MMPDialogImp setOnclick(Onclick onClick) {
this.onclick = onClick;
return this;
}
//静态调用方法
public void show() {
if (null == activity) throw new NullPointerException();
show(activity.getSupportFragmentManager(), "MMPDialog");
}
}
}
3,调用如下:
MMPDialog.build(LoginActivity.this).setContent("系统检测到您不是在常用设备登陆,请录入手机号进行验证。")
.setOnclick(new MMPDialog.Onclick() {
@Override
public void onPositive() {
mVH.showVerigyArea(getModifiedStartInfo(), mVH.mLoginCallback);
}
@Override
public void onNegative() {
}
}).show();
感谢:
Android Dialog使用详解:多种dialog
自定义DialogFragment:关于宽高设置
DialogFragment的使用(自定义Dialog ):关于样式、点击