Set Android Theme.Light for Alert Dialog

2019-03-22 16:10发布

I am trying to set the android Theme.Light theme for my alert dialog, but with no success so far. After reading a few tutorials I gathered that using AlertDialog.Builder we cannot set the theme directly in the constructor (atleast in API level 7).

The alternate solution that I found is using a ContextThemeWrapper, which everyone assured would solve my problem. So I coded something like this:

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

I described my theme in the values folder:

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

Unfortunately I still get the default Theme.Dialog.Alert theme. Can anyone tell me why? Where am I going wrong?

EDIT: If you do not know the answer to my question, please vote up. I have a bad habit of posting questions which get stuck :(

5条回答
2楼-- · 2019-03-22 16:32
parent="android:style/Theme.Light"
查看更多
SAY GOODBYE
3楼-- · 2019-03-22 16:37

change parent="android:Theme.Light" to parent="@android:style/Theme.Light"

查看更多
Luminary・发光体
4楼-- · 2019-03-22 16:40

This is what I did. And it worked for me

AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.Theme_AppCompat_Light_Dialog);
查看更多
▲ chillily
5楼-- · 2019-03-22 16:43

Try this:

<style name="popup_theme" parent="Theme.AppCompat.Light.Dialog.Alert">
查看更多
等我变得足够好
6楼-- · 2019-03-22 16:48

This took me a while to figure out as well.

The issue at hand is that Theme.Light and Theme.Holo.Light and such are designed around the activity. A dialog theme needs to be based around a theme such as @android:style/Theme.Dialog which contains properties specific to dialogs.

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

Try overriding the Theme.Dialog using things like:

<item name="android:textAppearance">?android:attr/textAppearanceInverse</item>
查看更多
登录 后发表回答