自定义对话框需要时间才能显示
Custom dialog takes time to show up
当我使用 AlertDialog.Builder 或布局相当复杂的 DialogFragment(例如 this 布局)实现自定义对话框时,对话框需要时间才能显示。但是当对话框只包含几个 editText 左右时......显示对话框没有问题。为什么会这样?
AlertDialog 框架是否用于构建仅用于提醒用户的对话框? (顾名思义。)
是否有其他一些框架可用于实现复杂的自定义对话框?
我已经尝试了以下方法来解决这个问题:
- 试图实现线程化以便我的对话框在后台准备就绪
线程并在我需要时显示它。但这在一般情况下是不允许的
因为除了 UI 线程之外的任何其他线程都不应该触及 UI
相关事件。
- 使对话框成为全局变量,在onCreate中初始化它并
然后显示 onButtonClick 对话框。
- 切换到约束布局
- 通过将对话框主题设置为 activity 作为对话框使用
activity 在清单文件中。
我要扩展到 问题。
任何帮助将不胜感激,提前致谢。
AlertDialog and 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)
从对话框的布局文件中引用视图
然后像 activity class 中的任何人一样实现逻辑。通过阅读官方 documentation.
找到适合您的用例的最佳实现
当我使用 AlertDialog.Builder 或布局相当复杂的 DialogFragment(例如 this 布局)实现自定义对话框时,对话框需要时间才能显示。但是当对话框只包含几个 editText 左右时......显示对话框没有问题。为什么会这样?
AlertDialog 框架是否用于构建仅用于提醒用户的对话框? (顾名思义。)
是否有其他一些框架可用于实现复杂的自定义对话框?
我已经尝试了以下方法来解决这个问题:
- 试图实现线程化以便我的对话框在后台准备就绪 线程并在我需要时显示它。但这在一般情况下是不允许的 因为除了 UI 线程之外的任何其他线程都不应该触及 UI 相关事件。
- 使对话框成为全局变量,在onCreate中初始化它并 然后显示 onButtonClick 对话框。
- 切换到约束布局
- 通过将对话框主题设置为 activity 作为对话框使用 activity 在清单文件中。
我要扩展到
AlertDialog and 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)
从对话框的布局文件中引用视图
然后像 activity class 中的任何人一样实现逻辑。通过阅读官方 documentation.
找到适合您的用例的最佳实现