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



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

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

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

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

我曾经在上面学习的堆栈溢出引用:
透明对话框主题
安卓对话框透明
如何使自定义对话框透明

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

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

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

<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);
    }
}

我遇到了同样的问题。 android:windowBackground 属性只是没有出现。您必须键入属性并自行更正,然后构建您的项目。瞧,它将编译没有任何错误,并且可以完美运行。

最新更新