1. Dialog 概念

**Dialog(对话框)**是 Android 提供的一种 浮动窗口组件,用于提示信息、获取用户输入或做简单选择。
特点:

  • 浮在当前 Activity 上,不占用全屏
  • 交互性强,通常包含按钮、输入框或列表
  • 可自定义布局和样式

2. Dialog 类型

2.1 AlertDialog(最常用)

  • 用于显示 警告、确认、选择 等信息
  • 可以包含 标题、内容、按钮

示例

new AlertDialog.Builder(this)

    .setTitle("提示")

    .setMessage("确定要退出吗?")

    .setPositiveButton("确定", (dialog, which) -> finish())

    .setNegativeButton("取消", null)

    .show();


2.2 ProgressDialog(已过时)

  • 用于显示 进度条,通常在耗时操作时使用
  • Android 官方建议使用 ProgressBar + DialogFragment 替代

2.3 DatePickerDialog / TimePickerDialog

  • 用于选择 日期 或 时间
  • 示例:

DatePickerDialog dialog = new DatePickerDialog(this,

    (view, year, month, dayOfMonth) -> {

        // 处理选择的日期

    }, 2025, 7, 27);

dialog.show();


2.4 自定义 Dialog

  • 可以使用 Dialog 或 DialogFragment 自定义布局
  • 示例:

Dialog dialog = new Dialog(this);

dialog.setContentView(R.layout.custom_dialog_layout);

dialog.show();

  • 可以在布局中放 EditText、Button、ImageView 等控件

3. Dialog 的显示方式

  • show():显示对话框
  • dismiss() / cancel():关闭对话框
  • setCancelable(boolean):是否允许点击空白区域或返回键取消

4. DialogFragment(推荐)

  • 继承 DialogFragment 可以更好地处理 生命周期 和 旋转屏幕重建
  • 示例:

public class MyDialogFragment extends DialogFragment {

    @NonNull

    @Override

    public Dialog onCreateDialog(Bundle savedInstanceState) {

        return new AlertDialog.Builder(getActivity())

            .setTitle("提示")

            .setMessage("这是DialogFragment")

            .setPositiveButton("确定", null)

            .create();

    }

}

// 显示

new MyDialogFragment().show(getSupportFragmentManager(), "dialog");


5. 注意事项

  1. 不要在后台线程直接操作 Dialog → 会报异常
  2. 避免内存泄漏 → 使用 DialogFragment 更安全
  3. UI 风格 → 可通过 Theme.Dialog 或自定义样式美化

💡 小技巧:

  • AlertDialog 的按钮可以通过 setOnShowListener 修改样式或字体
  • 自定义 Dialog + RecyclerView 可以实现选择列表或复杂交互

Android开发-Dialog对话框 – 菜鸟-创作你的创作

Logo

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。

更多推荐