设置警报对话框的高度

Set Height of Alert Dialog

我的警报对话框中有 2-3 个单选按钮,但对话框的大小并没有将它们包裹起来,即使屏幕可以轻松地容纳它们而不是将它们放在带有滚动视图的小布局中。

我参考了这个问题 How to control the width and height of the default Alert Dialog in Android? 并尝试了一些答案来增加警告对话框的高度但没有成功。当我尝试设置布局大小时,结果是这样的。

代码:

AlertDialog.Builder(requireContext()).setTitle("Choose Address")
        .setSingleChoiceItems(addresses, selectedItemIndex) { _, which ->
            selectedItemIndex = which
        }.setPositiveButton("Confirm Address") { dialog, _ ->
            confirmBooking(selectedItemIndex + 1, user)
            dialog.dismiss()
        }.setNeutralButton("Cancel") { dialog, _ ->
            dialog.dismiss()
        }.show()
        .window?.setLayout(
            (resources.displayMetrics.widthPixels * 0.9).toInt(),
            (resources.displayMetrics.heightPixels * 0.7).toInt()
        )

我想使用 MaterialAlertDialog,但结果也一样。我不想使用自定义对话框。我该如何解决这个身高问题?

如果需要任何其他信息,请发表评论。我将不胜感激任何帮助。提前致谢。

如果您希望对话框大小随内容高度而增长。然后它基本上是一个包装内容。您可以将 ViewGroup.LayoutParams.WRAP_CONTENT 应用于您的身高。

以下是对您的代码片段的轻微修改:

    val addresses = arrayOf("1", "2", "3","4","5","6")
    var selectedItemIndex = 0
    private fun showDialog() {

        AlertDialog.Builder(this).setTitle("Choose Address")
            .setSingleChoiceItems(addresses, selectedItemIndex) { _, which ->
                selectedItemIndex = which
            }.setPositiveButton("Confirm Address") { dialog, _ ->
                dialog.dismiss()
            }.setNeutralButton("Cancel") { dialog, _ ->
                dialog.dismiss()
            }.show()
            .window?.setLayout(
                (resources.displayMetrics.widthPixels * 0.9).toInt(),
                ViewGroup.LayoutParams.WRAP_CONTENT
            )

    }

输出:

使用您提供的字符串:

对于它的价值,使用您的代码(只是对话框构建器,而不是末尾的 window-tweaking 位)我得到:

import android.app.AlertDialog - 以系统设置中的 默认 字体大小正确扩展,保持较小并以 最大 滚动。 (几乎就像它试图保持一致的大小,基于 Default 所需的 space)

import androidx.appcompat.app.AlertDialog - 在 默认值最大

处正确扩展

这是在 API 30 模拟器上使用 appcompat:1.4.0 和旧测试项目,我期望的最新版本应该是相同的!