3

我正在尝试创建一个具有半透明背景的自定义对话框。我设法让它通过代码工作:

getWindow().setBackgroundDrawableResource(R.color.bg_tran);

其中 bg_tran == #A0000000。但是我宁愿在 XML 中使用它,因为我将它用于几个不同的自定义对话框类。仅使用 android:background 不起作用。将主题设置为 @android:style/Theme.Translucent 也不起作用。

我发现了几篇关于使用属性 android:windowBackground 的文章。但是 android:windowBackground 属性不存在。意思是 Eclipse 并没有显示它作为自动完成的选项。我检查了我的样式表和我的实际 layout.xml。由于我正在为 2.2 编译,我认为这个问题并将构建目标更改为 4.0.3。没有修复。我什至尝试过明确地使用它,但它不起作用。我搜索了 Android Dev 网站,甚至找不到描述此属性的页面。除了偶尔顺便提一下,什么都没有。还查找 setBackgroundDrawableResource 并没有告诉我等效的 XML 属性标记是什么。我非常困惑。我错过了什么?

堆栈溢出参考上面我曾经学过:
Transparent Dialog Theme
Android Dialog Transparent
How to make a custom dialog transparent

更新:
如果不清楚,是的,我尝试在主题中进行设置。不工作。这是我定义的主题:

<style name="my_dialog_theme" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@color/bg_tran</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
</style>
4

2 回答 2

3

您需要为您的对话框定义一个自定义主题。

<style name="Theme.CustomDialog" parent="android:Theme.Dialog">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    ...
    ...
</style>

更新:

Dialog你可以通过扩展类来实现你想要的对话。在这个派生类中设置可绘制的窗口背景。

public class CustomDialog extends Dialog 
{
    public CustomDialog (final Context context)
    {
        super(context);

        // This is the layout XML file that describes your Dialog layout
        this.setContentView(R.layout.myDialogLayout);  
        getWindow().setBackgroundDrawableResource(R.color.bg_tran);
    }
}
于 2012-05-07T15:47:05.293 回答
0

我遇到过同样的问题。android:windowBackground 属性只是没有出现。您必须输入完整的属性并自行更正,然后构建您的项目。瞧,它会编译没有任何错误,它会完美地工作。

于 2014-10-14T10:14:29.327 回答