我正在尝试创建一个具有半透明背景的自定义对话框。我设法通过代码让它工作:
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 属性标记是什么。我非常困惑。我缺少什么?
我在上面学习过的堆栈溢出参考资料:
透明对话框主题 https://stackoverflow.com/questions/6070505/android-how-to-create-a-transparent-dialog-themed-activity
Android 对话框透明 https://stackoverflow.com/questions/6059068/android-dialog-transparent
如何使自定义对话框透明 https://stackoverflow.com/questions/5580531/how-to-make-a-custom-dialog-transparent
Update:
如果还不清楚,是的,我已经尝试在主题中设置它。不起作用。这是我定义的主题:
<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>
Update:
您可以通过扩展对话框来实现您想要的效果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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)