向 AlertDialog 添加边框

Adding a border to an AlertDialog

我正在尝试为警告对话框添加边框。我希望让它看起来像这样:

迄今为止我发现的最佳解决方案是使用九个可绘制的补丁作为对话框的背景。

这个问题是我还没有找到一种方法来制作九个补丁背景,该背景实际上为对话框周围提供了一致的白线。到目前为止,这是我最好的尝试(抱歉有点难看...):

问题是这会产生如下对话框:

这里的问题是双重的;两侧的线条太粗了,顶部的线条被阴影褪色了。

我唯一的想法是要么找到一个可以提供一致粗边框的工作九补丁,要么找到一种方法来获得警报对话框的 'main layout',这样我就可以直接添加一个填充.

在这样的警告对话框上设置边框的最佳方法是什么?

在您的对话框 xml 中为顶级视图设置以下背景:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/white"/>
    <item
        android:bottom="1dp"
        android:drawable="@color/black"
        android:left="1dp"
        android:right="2dp"
        android:top="2dp">
    </item>
</layer-list>

您可以自定义每边的边框宽度。

提问者的回答和我想要的很接近,但还是在对话框周围留下了一条我不感兴趣的大黑线。

我从图层列表中删除了其中一个图层,并自定义了白色边框上的填充。我也没有按照建议将背景设置为透明,这在评论中是个好主意。

项目内部的形状是为了让背景在对话框中具有相同的弯曲边缘(如果您在 3.0+ 上仔细观察,您可以看到几个像素的圆角)。

drawable 文件夹的 dialog_border.xml 文件中,我有这个:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:top="6dp"
        android:left="13dp"
        android:right="13dp"
        android:bottom="6dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/offWhite" />

            <corners
                android:radius="3dp"/>
        </shape>
    </item>
</layer-list>

按照我的风格,我有这个:

<style name="DialogTheme" parent="android:Theme.Holo.Dialog">
    <item name="android:windowBackground">@drawable/dialog_border</item>
</style>

尽管必要时可以通过编程方式而不是在样式中进行设置。