在Android 4中设置对话框宽度

时间:2011-10-27 09:13:37

标签: android dialog width android-4.0-ice-cream-sandwich

我在使用自定义视图的应用程序中有许多对话框。在Android 4之前,这些对话框的高度和宽度正如我所期望的那样根据内容进行调整。在Andorid 4模拟器中,此行为已更改。看起来宽度会拉伸以容纳内容,但它的最小尺寸低于它不会。我可以使对话框更宽,但对于窄内容,对话框不会像我期望的那样减少。因此,我的内容显示在超宽对话框的左侧。一切都完美适用于3.0。我试过了:

dialog.setContentView(R.layout.help_dialog);
dialog.getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

这没有效果。此外,标题的内容不强制对话框扩展。任何想法都非常感激。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题 - 用它修好了:

final Dialog help = new Dialog(this);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(help.getWindow().getAttributes());

lp.width = (int) (width);
lp.height = (int) (height);

help.show();
help.getWindow().setAttributes(lp);

答案 1 :(得分:0)

我发现你可以在一个可绘制的xml中设置对话框的边距和填充

    Dialog dialog = new Dialog(this);

    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.getWindow().setBackgroundDrawableResource(r.drawable.your_drawable);
    dialog.getWindow().setContentView(R.layout.your_custom_dialog_layout);
    dialog.getWindow().getAttributes().width = LayoutParams.FILL_PARENT;
    dialog.show();

看看r.drawable.your_drawable

<?xml version="1.0" encoding="utf-8"?>
<layer-list>
    <item
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:left="70dp"
        android:right="70dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/white" />
            <corners android:radius="4dp" />
            <padding
                android:bottom="70dip"
                android:left="70dip"
                android:right="70dip"
                android:top="70dip" />
        </shape>
    </item>
</layer-list>

通过设置项目android:right / left,它可以绘制drawable。 使用形状填充,您可以确保custom_dialog_layout中的字段不超过对话框背景的宽度。

我希望它对你有所帮助。