自定义透明对话框(窗口背景不存在?)

时间:2012-05-07 15:36:12

标签: android xml dialog transparent

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

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>

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

我遇到过同样的问题。 android:windowBackground属性只是没有出现。你必须输入完整的属性并自己更正,然后构建你的项目。瞧,它会在没有任何错误的情况下编译,并且可以完美地运行。