为警报对话框设置Android Theme.Light

时间:2011-07-18 07:16:01

标签: android android-layout alertdialog android-theme

我正在尝试为我的警报对话框设置android Theme.Light 主题,但到目前为止还没有成功。在阅读了一些教程后,我使用 AlertDialog.Builder 收集了这些教程,我们无法直接在构造函数中设置主题(至少在API级别7中)。

我找到的备用解决方案是使用 ContextThemeWrapper ,每个人都放心使用它可以解决我的问题。所以我编写了这样的代码:

AlertDialog.Builder builder = new AlertDialog.Builder(
                    new ContextThemeWrapper(context, R.style.popup_theme));

我在values文件夹中描述了我的主题:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="back_color">#ffffffff</color>
<style name="popup_theme" parent="@android:style/Theme.Light">
    <item name="android:windowBackground">@color/back_color</item>
    <item name="android:colorBackground">@color/back_color</item>
</style>

不幸的是,我仍然获得默认的 Theme.Dialog.Alert 主题。谁能告诉我为什么?我哪里错了?

修改: 如果你不知道我的问题的答案,请投票。我有一个不好的习惯,就是发布被困的问题:(

5 个答案:

答案 0 :(得分:6)

parent="android:Theme.Light"更改为parent="@android:style/Theme.Light"

答案 1 :(得分:3)

我花了一段时间才弄明白。

现在的问题是Theme.Light和Theme.Holo.Light等是围绕活动设计的。对话框主题需要基于主题,例如@android:style / Theme.Dialog,其中包含特定于对话框的属性。

<style name="popup_theme" parent="@android:style/Theme.Dialog">

尝试使用以下内容覆盖Theme.Dialog:

<item name="android:textAppearance">?android:attr/textAppearanceInverse</item>

答案 2 :(得分:1)

parent="android:style/Theme.Light"

答案 3 :(得分:1)

试试这个:

<style name="popup_theme" parent="Theme.AppCompat.Light.Dialog.Alert">

答案 4 :(得分:0)

这就是我所做的。它对我有用

AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.Theme_AppCompat_Light_Dialog);