问题描述
当我通过使用布局相当复杂(例如this)的AlertDialog.Builder或DialogFragment实现自定义对话框时,该对话框需要花费一些时间才能显示出来。但是,如果对话框仅包含几个editText左右...,则显示对话框没有问题。为什么会这样?
是否使用AlertDialog框架来构建仅用于警告用户的对话框? (顾名思义。)
还有其他一些框架可用于实现复杂的自定义对话框吗?
我尝试了以下方法来解决此问题:
- 尝试实现线程化,以便在后台准备好我的对话框 并在需要时显示它。但这通常是不允许的 因为除了UI线程外,其他任何线程都不应该触摸UI 相关事件。
- 使对话框成为全局变量,并在onCreate和 然后显示对话框onButtonClick。
- 切换到约束布局
- 通过将对话框主题设置为对话框将活动用作对话框 清单文件中的活动。
我正在扩展this问题。 在此先感谢您的任何帮助。
解决方法
AlertDialog和DialogFragment框架很慢,因为它们需要一些时间来进行计算和片段化。因此,解决此问题的方法是立即使用Dialog框架。
-
使用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
-
定义布局,然后使用
dialog.setContentView(R.layout.name_of_layout)
。 -
使用
dialog.findViewById(R.id.name_of_view)
引用对话框布局文件中的视图
然后像执行活动类中的任何人一样实施逻辑。阅读官方的documentation,找出适合您的用例的最佳实现。