如何删除android列表警报对话框中的额外空间

如何删除android列表警报对话框中的额外空间,android,android-alertdialog,Android,Android Alertdialog,我试图显示带有单选项的示例警报对话框,但遇到了以下问题: 列表结束后的额外空间 这是我的密码 final CharSequence[] items = {"Red", "Green", "Blue"}; AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Pick a color"); builder.setSingleChoiceIt

我试图显示带有单选项的示例警报对话框,但遇到了以下问题: 列表结束后的额外空间

这是我的密码

final CharSequence[] items = {"Red", "Green", "Blue"};

        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle("Pick a color");
        builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                Toast.makeText(context, items[item], Toast.LENGTH_SHORT).show();
            }
        });
        AlertDialog alert = builder.create();
        alert.show();


建议我解决这个问题。

你可以有自己的对话框布局(见文档),但我建议保持原样,因为这个对话框在HC/ICS/JB上的外观会有所不同,所以调整它的外观是一个非常糟糕的主意,因为在安卓的其他版本上,它可能看起来会有所不同。操作系统就是这样做的。这是我的建议。

在构建自定义警报对话框时,我也遇到过类似的问题。 为了解决这个问题,我不得不使用主题来去除剩余的空间。 以下是我遵循的代码:

private Dialog getCustomDialog() {
      AlertDialog.Builder builder = new AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Panel);
      AlertDialog dialog = builder.create();
      dialog.setView(dialogView, 0, 0, 0, 0);
      return dialog;
    }
根据文档,android.R.style.Theme\u DeviceDefault\u面板的用法如下所示:

private Dialog getCustomDialog() {
      AlertDialog.Builder builder = new AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Panel);
      AlertDialog dialog = builder.create();
      dialog.setView(dialogView, 0, 0, 0, 0);
      return dialog;
    }
这将删除所有无关的窗口装饰,因此基本上 用于放置内容的空矩形。它能打开窗户 浮动,具有透明背景,并关闭后面的调光 窗户


我认为唯一的方法是用自己的自定义对话框布局创建对话框。这里是文档:看看你是否能从这个问题中得到一些东西:正如你所说的,它将取决于操作系统,我想这是为什么,因为我没有改变任何属性,只是使用默认属性。但我不能在我的应用程序中使用它,因为它看起来不太好,所以我创建了一个自定义对话框来满足我的要求。