dialog.xml布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="295dp"
android:layout_height="wrap_content"
android:background="@drawable/end_dialog"
tools:ignore="MissingDefaultResource">
<ImageView
android:id="@+id/no"
android:layout_width="@dimen/dp20"
android:layout_height="@dimen/dp20"
android:layout_alignParentRight="true"
android:background="@drawable/ic_dialog_end" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp33"
android:layout_marginTop="@dimen/dp60"
android:layout_marginRight="@dimen/dp33"
android:text="@string/prompt12"
android:textColor="@color/white"
android:textSize="@dimen/sp18" />
<android.widget.Button
android:id="@+id/yes"
android:layout_width="match_parent"
android:layout_height="@dimen/dp40"
android:layout_marginLeft="@dimen/dp62"
android:layout_marginTop="43dp"
android:layout_marginRight="@dimen/dp62"
android:layout_marginBottom="@dimen/dp40"
android:background="@drawable/shape_btn_red2_rectangle_corner_bg"
android:text="@string/i_know"
android:textAllCaps="false"
android:textColor="@color/white" />
</LinearLayout>
</RelativeLayout>
UpdateDialogs自定义弹框代码
public class UpdateDialogs extends Dialog {
private Button yes;//确定按钮
private ImageView no;//取消按钮
private TextView mTvContent;
boolean touchOutside;
private onNoOnclickListener noOnclickListener;//取消按钮被点击了的监听器
private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器
public UpdateDialogs(@NonNull Context context) {
super(context);
}
public UpdateDialogs(@NonNull Context context, int themeResId) {
super(context, themeResId);
}
protected UpdateDialogs(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog);
initView();
}
/**
* 空方法,按下返回键时就不会关闭对话框
*/
@Override
public void onBackPressed() {}
/**
* 初始化界面控件
*/
private void initView() {
yes = findViewById(R.id.yes);
no = findViewById(R.id.no);
mTvContent = findViewById(R.id.tv_content);
//设置取消按钮被点击后,向外界提供监听
no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (noOnclickListener != null) {
noOnclickListener.onNoClick();
}
}
});
yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (yesOnclickListener != null) {
yesOnclickListener.onYesOnclick();
}
}
});
}
/**
* 设置不可消失
* @param touchOutside false不可关闭
*/
public void setNotDisappear(boolean touchOutside){
this.touchOutside=touchOutside;
this.setCanceledOnTouchOutside(touchOutside);// false 禁止通过触摸对话框外部来关闭对话框
no.setVisibility(View.GONE);//隐藏关闭按钮
}
/**
* 设置文本内容
* @param content
*/
public void setContent(String content){
mTvContent.setText(content);
}
public void setButtonText(String content){
yes.setText(content);
}
/**
* 设置取消按钮的显示内容和监听
*
* @param str
* @param onNoOnclickListener
*/
public void setNoOnclickListener( onNoOnclickListener onNoOnclickListener) {
this.noOnclickListener = onNoOnclickListener;
}
/**
* 设置确定按钮的显示内容和监听
*
* @param str
* @param yesOnclickListener
*/
public void setYesOnclickListener( onYesOnclickListener yesOnclickListener) {
this.yesOnclickListener = yesOnclickListener;
}
public interface onNoOnclickListener {
public void onNoClick();
}
public interface onYesOnclickListener {
public void onYesOnclick( );
}
}
style.xml 设置弹框主题
<!--自定义Dialog背景全透明无边框theme-->
<style name="MyDialog" parent="android:style/Theme.Dialog">
<!--背景颜色和透明程度-->
<item name="android:windowBackground">@android:color/transparent</item>
<!--是否去除标题-->
<item name="android:windowNoTitle">true</item>
<!--是否去除边框-->
<item name="android:windowFrame">@null</item>
<!--是否浮现在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--是否模糊-->
<item name="android:backgroundDimEnabled">true</item>
</style>
显示弹框
UpdateDialogs updateDialogs= new UpdateDialogs(this, R.style.MyDialog);
updateDialogs.show();
updateDialogs.setTitle(content);
updateDialogs.setYesOnclickListener(() -> {
updateDialogs.hide();
});
updateDialogs.setNoOnclickListener(() -> {
updateDialogs.hide();
});