自定义AlertDialog页脚

时间:2011-08-16 16:50:54

标签: android android-layout

我想自定义AlertDialog的页脚,我的意思是,按钮所在的位置。

我尝试创建一个单独的布局并在调用builder = AlertDialog.Builder();

之前对其进行充气 像这样:

AlertDialog.Builder builder;
        AlertDialog alertDialog;

        Context mContext = activity;
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.customdialog, (ViewGroup) activity.findViewById(R.id.layout_root));
        TextView dialogTitle = (TextView) layout.findViewById(R.id.dilaogTitle);
        dialogTitle.setText("Alert Dialog Test");

        TextView closeConfirmationQuestion = (TextView) layout.findViewById(R.id.textview);
        closeConfirmationQuestion.setText("Test for AlertDialog");


        builder = new AlertDialog.Builder(activity).setCancelable(false).setPositiveButton("Yes"), new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                //Do something
            }
        }).setNegativeButton("No"), new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                dialog.cancel();
            }
        });
        builder.setView(layout);
        alertDialog = builder.create();
        alertDialog.setView(layout, 0, 0, -3, -3);
        alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        alertDialog.show();

但我只能自定义AlertDialog的内容,而不能自定义页脚和按钮。这是怎么回事:

enter image description here

我需要知道如何自定义按钮及其支架,我的意思是,AlertDialog的页脚,可能会将颜色或图像作为背景而不是标准的“灰色”颜色,还要设置自定义背景按钮。

感谢。

5 个答案:

答案 0 :(得分:4)

如果您希望将AlertDialog更改为其设计格式,我建议您扩展自己的Dialog版本并使用它。

答案 1 :(得分:2)

您还可以使用新的Activity并将主题设置为Android Manifest中的android:theme="@android:style/Theme.Dialog"。这将允许您使用自己的XML布局文件。

答案 2 :(得分:1)

在这种情况下,为什么不使用自定义对话框而不是alertdialog?

答案 3 :(得分:1)

setNegativeButton()setPositiveButton()方法将按钮放在预定义的位置。这就是为什么在将布局扩展到AlertDialog时,您可以自定义除按钮位置之外的所有内容。

您的选择是:

  1. 请勿使用setNegativeButton()或此类方法 - 而是在布局中添加自己的自定义按钮。这意味着您需要监听特定的按钮点击。不知何故,这个解决方案对我没有吸引力,因为不打算以这种方式使用AlertDialog
  2. 使用其他答案中提到的自定义对话框(解释here)。
  3. @Phil上面的建议看起来很有趣。我没有尝试过。

答案 4 :(得分:0)

此外,在扩展Dialog时,您可能需要对其进行设置,使其不使用默认标题(以便具有一致/完全自定义的外观)。这可以通过以下方式完成:

“dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);”