效果如下图
对话框布局
dialog_uninstallation_confirmation.xml
自定义的对话框类
UninstallationConfirmationDialog.java
package com.bu_ish.custom_dialog_example;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.ImageView;import android.widget.TextView;public abstract class UninstallationConfirmationDialog extends Dialog { private ImageView iconImageView; private TextView messageTextView; private int iconResId; private String message; public abstract void onCancelClicked(); public abstract void onUninstallClicked(); public UninstallationConfirmationDialog(Context context) { super(context, R.style.UninstallationConfirmationDialog); } public UninstallationConfirmationDialog setIcon(int resId) { this.iconResId = resId; return this; } public UninstallationConfirmationDialog setMessage(String message) { this.message = message; return this; } @Override public void show() { super.show(); Window window = getWindow(); WindowManager.LayoutParams layoutParams = window.getAttributes(); layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; window.setAttributes(layoutParams); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_uninstallation_confirmation); iconImageView = findViewById(R.id.iconImageView); messageTextView = findViewById(R.id.messageTextView); iconImageView.setImageResource(iconResId); messageTextView.setText(message); findViewById(R.id.cancelTextView).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onCancelClicked(); dismiss(); } }); findViewById(R.id.uninstallTextView).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onUninstallClicked(); dismiss(); } }); }}
对话框style
P.S.
对话框默认风格是带标题的,通过windowNoTitle设置为无标题
为保证对话框宽度与屏幕匹配,须通过Window.setAttributes(WindowManager.LayoutParams)设置宽度
完整Demo链接:,提取码:qbwu