前言
每次有新项目都要重新写一个,太麻烦了,在这里记录一下,同时与大家分享
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp30"
android:layout_marginEnd="@dimen/dp30"
android:background="@drawable/shape_white_20"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp20"
android:layout_marginBottom="@dimen/dp10"
android:gravity="center"
android:textStyle="bold"
android:text="标题"
android:textColor="@color/black"
android:textSize="18sp" />
<View
android:layout_width="wrap_content"
android:layout_height="@dimen/line"
android:layout_marginTop="@dimen/dp10"
android:layout_marginBottom="@dimen/dp20"
android:background="@color/dividingLine" />
<TextView
android:id="@+id/tv_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="内容"
android:textSize="16sp" />
<View
android:layout_width="wrap_content"
android:layout_height="@dimen/line"
android:layout_marginTop="@dimen/dp20"
android:layout_marginBottom="@dimen/dp20"
android:background="@color/dividingLine" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/dp20"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="取消"
android:textColor="#999999"
android:textSize="16sp" />
<View
android:layout_width="@dimen/line"
android:layout_height="match_parent"
android:background="@color/dividingLine" />
<TextView
android:id="@+id/tv_sure"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="确认"
android:textColor="@color/black"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
Style
<style name="LoadDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:backgroundDimAmount">0.6</item>
</style>
代码
public class SureCancelDialg extends Dialog {
private Context activity;
private View view;
private TextView tvTitle;
private TextView tvMessage;
private TextView tvCancel;
private TextView tvSure;
private String title;
private String message;
private onListener onListener;
public SureCancelDialg(@NonNull Context context, String title, String message, onListener onListener) {
super(context, R.style.LoadDialog);
this.activity = context;
this.title = title;
this.message = message;
this.onListener = onListener;
init();
initView();
}
public SureCancelDialg(@NonNull Context context) {
super(context, R.style.LoadDialog);
init();
initView();
}
private void initView() {
tvTitle = view.findViewById(R.id.tv_title);
tvMessage = view.findViewById(R.id.tv_message);
tvCancel = view.findViewById(R.id.tv_cancel);
tvSure = view.findViewById(R.id.tv_sure);
tvTitle.setText(title);
tvMessage.setText(message);
tvCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
onListener.cancel();
}
});
tvSure.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
onListener.sure();
}
});
}
public void setOnListener(SureCancelDialg.onListener onListener) {
this.onListener = onListener;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
private void init() {
view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_sure_cancel, null);
setContentView(view);
setCanceledOnTouchOutside(true);
setCancelable(true);
}
public static Builder DialogBuilder(Context context){
Builder builder =new Builder(context);
return builder;
}
private Context getActivity() {
return activity;
}
public static class Builder {
private String title;
private String message;
private onListener onListener;
private Context context;
public Builder(Context context) {
this.context = context;
}
public Builder title(String title) {
this.title = title;
return this;
}
public Builder message(String message) {
this.message = message;
return this;
}
public Builder onListener(onListener onListener) {
this.onListener = onListener;
return this;
}
public SureCancelDialg build(){
SureCancelDialg dialg = new SureCancelDialg(context,title,message,onListener);
return dialg;
}
}
public interface onListener {
void sure();
void cancel();
}
}
调用示例 一
SureCancelDialg.DialogBuilder(getActivity())
.title("临时密码")
.message("确定要删除临时密码吗")
.onListener(new SureCancelDialg.onListener() {
@Override
public void sure() {
}
@Override
public void cancel() {
}
}).build();