Установить Android Theme.Light для диалогового окна предупреждений

Я пытаюсь установить тему Android Theme.Light для моего диалогового окна оповещения, но пока безуспешно. Прочитав несколько руководств, я понял, что с помощью AlertDialog.Builder мы не можем установить тему непосредственно в конструкторе (по крайней мере, на уровне API 7).

Альтернативное решение, которое я нашел, — это использование ContextThemeWrapper, которое, как все уверяли, решит мою проблему. Итак, я закодировал что-то вроде этого:

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

Я описал свою тему в папке значений:

<?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: если вы не знаете ответа на мой вопрос, пожалуйста, проголосуйте. У меня есть дурная привычка задавать вопросы, которые застревают :(


person Arnab Chakraborty    schedule 18.07.2011    source источник


Ответы (4)


изменить parent="android:Theme.Light" на parent="@android:style/Theme.Light"

person Gallal    schedule 18.07.2011
comment
Исправил. Все еще никаких изменений. - person Arnab Chakraborty; 18.07.2011
comment
это работает? также, как вы устанавливаете его для диалогов actionBarSherlock? - person android developer; 19.05.2013

Мне тоже потребовалось некоторое время, чтобы понять это.

Проблема заключается в том, что 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>
person tomwardiii    schedule 01.08.2012

Попробуй это:

<style name="popup_theme" parent="Theme.AppCompat.Light.Dialog.Alert">
person Ashwin    schedule 23.08.2016

Это то, что я сделал. И это сработало для меня

AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.Theme_AppCompat_Light_Dialog);
person Rupam Das    schedule 29.12.2017