如何更改Android警报对话框的背景?



Answers

一旦你发现AlertDialogs有一些特殊的属性,用XML风格很容易做到这一点。

但是,知道您所指的是哪个Android版本(或针对​​的目标)会很有趣。 据我所知,Theme.Dialog是比较新的。 在较旧的版本使用它们的情况下,较新的Android版本也不使用AlertDialogs。

这在Android 2.2中适用于我:

<style name="MyTheme" parent="@android:style/Theme">
    <item name="android:alertDialogStyle">@style/MyOpaqueAlertDialog</item>
</style>

<style name="MyOpaqueAlertDialog">
    <item name="android:fullDark">@drawable/[...]</item>
    <item name="android:topDark">@drawable/[...]</item>
    <item name="android:centerDark">@drawable/[...]</item>
    <item name="android:bottomDark">@drawable/[...]</item>
    <item name="android:fullBright">@drawable/[...]</item>
    <item name="android:topBright">@drawable/[...]</item>
    <item name="android:centerBright">@drawable/[...]</item>
    <item name="android:bottomBright">@drawable/[...]</item>
    <item name="android:bottomMedium">@drawable/[...]</item>
    <item name="android:centerMedium">@drawable/[...]</item>
</style>

较新的Android版本也有AlertDialog风格的android:progressLayout和android:horizo​​ntalProgressLayout属性。

此外,在较新的Android版本中,可以通过在自定义主题中使用alertDialogTheme而不是alertDialogStyle来引用AlertDialog主题。 AlertDDialogThemes支持更多的熟悉和更强大的属性,如windowBackground,windowTitleStyle等。看看styles.xml和themes.xml。

不幸的是,当超级差的时候,哪些功能的文档被添加了。 请找出自己的方法是最适合你的。

Question

我在我的应用程序中使用AlertDialog类。 默认情况下,这些警报对话框具有透明背景。 我试图使用不透明的背景,而非常失败。 这些是我的风格:

<style name="MyOpaqueActivity" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@drawable/my_background</item>
    <item name="android:alertDialogStyle">@style/MyOpaqueAlertDialog</item>
</style>

<style name="MyOpaqueAlertDialog" parent="@android:style/Theme.Dialog.Alert">
    <item name="android:background">#454545</item>
    <item name="android:windowBackground">@drawable/my_background</item>
    <item name="android:popupBackground">@drawable/my_background</item>
</style>

我对整个活动(窗口背景更改为“my_background”)成功应用了“MyOpaqueActivity”风格,但在这些活动中不适用于警报对话框。 “alertDialogStyle”属性和我的“MyOpaqueAlertDialog”风格似乎没有任何影响。

那么如何更改这些警报对话框的背景呢?




Links