2015-05-09 130 views
1

我正在尝试将边框添加到警报对话框。我希望,使它看起来像这样:将边框添加到AlertDialog

enter image description here

迄今为止我已经找到了最好的解决方案是使用九个补丁绘制作为背景的对话框。

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

enter image description here

的问题是,这会产生这样的对话:

enter image description here

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

我唯一的想法是找到一个工作的九个补丁,该补丁提供一致的粗边界,或者找到一种方法来获得警报对话框的“主布局”,所以我可以直接添加填充。

什么是最好的方式去建立这样的警报对话框的边界?

回答

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> 

虽然它也许可以编程的设置,而不是风格如有必要。

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> 

你可以在每边自定义边框宽度。

+0

谢谢;这种方法似乎很有前途......但是,我怎样才能使边界只有1-2dp宽?对话框和白色边框之间仍有大量黑色空间。 – jcw

+0

@jcw您是否尝试将此可绘制设置为背景?您可以自由定制边框的宽度。如果有对话框样式的任何工件,请尝试:getWindow()。setBackgroundDrawableResource(android.R.color.transparent);'在构造函数或onCreateDialog中。 – questioner

+0

是的,我将它设置为我的对话框的背景,但它与我的问题中的图像有相同的问题(除了部分边框是黑色的)。我试图摆脱一个15-20dp宽的黑色边框,接着是我之后的细白线。将背景设置为透明不是我想要做的;我正在尝试获得一个正常的对话框,并带有白色边框....感谢您的帮助。 – jcw