【问题标题】:Custom dialog takes time to show up自定义对话框需要时间才能显示
【发布时间】:2020-08-12 09:01:06
【问题描述】:

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

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

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

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

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

我正在向this 提问。 任何帮助将不胜感激,在此先感谢。

【问题讨论】:

  • 布局很简单,应该不是问题。你有任何逻辑来填充这些微调器吗?也许分享你的 xml
  • @MaiconHellmann 感谢您的回复,请参阅this 我的问题。
  • 我使用了 ArrayAdapter(ArrayLists 被输入其中)来填充微调器

标签: android performance dialog customdialog


【解决方案1】:

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

  1. 使用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,找出最适合您用例的实现。

【讨论】:

    猜你喜欢
    • 2012-05-15
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多