向AlertDialog添加边框

时间:2015-05-09 18:02:29

标签: android android-alertdialog

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

enter image description here

到目前为止,我找到的最佳解决方案是使用九个补丁绘图作为对话框的背景。

这个问题是我没有找到一种方法来制作一个九个补丁背景,它实际上为对话框提供了一致的白线。这是迄今为止我最好的尝试(对不起,有点难以看到......):

enter image description here

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

enter image description here

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

我唯一的想法是找到一个可以提供一致厚边框的工作九补丁,或找到一种方法来获得警告对话框的'主要布局',这样我就可以直接添加填充。

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

2 个答案:

答案 0 :(得分:3)

提问者的答案非常接近我想要的,但它仍然在我不感兴趣的对话框周围留下了一条很大的黑线。

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

项目内部的形状是在对话框中为背景提供相同的弯曲边缘(如果你仔细观察3.0+,你可以看到一些圆角像素)。

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

<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>

虽然它可能以编程方式设置,而不是在必要时以样式设置。

答案 1 :(得分:2)

在对话框的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>

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