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

问题描述

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

是否使用AlertDialog框架来构建仅用于警告用户的对话框? (顾名思义。)

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

我尝试了以下方法来解决此问题:

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

我正在扩展this问题。 在此先感谢您的任何帮助。

解决方法

AlertDialogDialogFragment框架很慢,因为它们需要一些时间来进行计算和片段化。因此,解决此问题的方法是立即使用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)引用对话框布局文件中的视图

然后像执行活动类中的任何人一样实施逻辑。阅读官方的documentation,找出适合您的用例的最佳实现。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...