AlertDialogBu​​ilder异常行为

AlertDialogBu​​ilder异常行为

我想更改标准Holo.Light对话框的背景。当我将自定义视图设置为对话框警报时,它的高度就会增加。

这是我的普通对话框代码

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mLogin);
alertDialogBuilder.setTitle("No Connection");
alertDialogBuilder.setMessage("You are not connected to a Wifi or data connection. Please connect and retry");
alertDialogBuilder.setNeutralButton(getString(R.string.miscClose), new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
    }

});
alertDialogBuilder.show();


此代码显示此对话框



然后,我尝试添加我的视图,如下所示:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mLogin);
alertDialogBuilder.setView(View.inflate(mLogin, R.layout.test_alert, null));
alertDialogBuilder.setTitle("No Connection");
alertDialogBuilder.setMessage("You are not connected to a Wifi or data connection. Please connect and retry");

alertDialogBuilder.setNeutralButton(getString(R.string.miscClose), new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
    }
});
alertDialogBuilder.show();


此代码显示此对话框:



我不明白为什么它只是增加了空间。我添加了一个简单的布局,背景颜色为蓝色。如下图所示:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/YakBlue">


</LinearLayout>


关于如何将基本警报对话框的背景颜色更改为蓝色的任何帮助都将非常有用。

附言:我尝试过主题,但没有成功。我的最小apk是9。

谢谢

最佳答案

这是因为警报对话框的布局包含一个将视图放入其中的容器,因此您要做的只是添加一个占用空间的空视图。尝试将其颜色更改为红色,您会发现它位于文本下方和按钮上方。

为了更改对话框的样式,您应该很好地更改其样式。 here's一个很好的库,演示了如何使用基本的全息样式。您还可以使用HoloEverywhere库中显示的内容。

当然,如果您不想支持旧的设备(但是根据minSdk,您可以这样做),则可以直接更改样式并为应用程序本身设置主题,这将更改整个应用程序的对话框样式。

不仅如此,您甚至不必使用AlertDialog。您可以创建自己的对话框。

关于android - SetView AlertDialogBu​​ilder异常行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22158005/

10-09 00:07