自定义对话框需要时间才能显示

Custom dialog takes time to show up

当我使用 AlertDialog.Builder 或布局相当复杂的 DialogFragment(例如 this 布局)实现自定义对话框时,对话框需要时间才能显示。但是当对话框只包含几个 editText 左右时......显示对话框没有问题。为什么会这样?

AlertDialog 框架是否用于构建仅用于提醒用户的对话框? (顾名思义。)

是否有其他一些框架可用于实现复杂的自定义对话框?

我已经尝试了以下方法来解决这个问题:

  1. 试图实现线程化以便我的对话框在后台准备就绪 线程并在我需要时显示它。但这在一般情况下是不允许的 因为除了 UI 线程之外的任何其他线程都不应该触及 UI 相关事件。
  2. 使对话框成为全局变量,在onCreate中初始化它并 然后显示 onButtonClick 对话框。
  3. 切换到约束布局
  4. 通过将对话框主题设置为 activity 作为对话框使用 activity 在清单文件中。

我要扩展到 问题。 任何帮助将不胜感激,提前致谢。

AlertDialog and DialogFragment 框架很慢,因为它们需要一些时间来进行计算和碎片处理。所以解决这个问题的方法是直接使用 Dialog 框架。

  1. 使用 Dialog 框架的构造函数初始化 Dialog 对象,如下所示:

    Dialog dialog = new Dialog(context, R.style.Theme_AppCompat_Dialog);
    // the second parameter is not compulsory and you can use other themes as well
    
  2. 定义布局然后使用dialog.setContentView(R.layout.name_of_layout)

  3. 使用dialog.findViewById(R.id.name_of_view)从对话框的布局文件中引用视图

然后像 activity class 中的任何人一样实现逻辑。通过阅读官方 documentation.

找到适合您的用例的最佳实现