Подтвердить что ты не робот

Установите 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>

К сожалению, я по-прежнему получаю тему Theme.Dialog.Alert по умолчанию. Может ли кто-нибудь сказать мне, почему? Где я ошибаюсь?

ИЗМЕНИТЬ: Если вы не знаете ответа на мой вопрос, пожалуйста, проголосуйте. У меня плохая привычка задавать вопросы, которые застряли: (

4b9b3361

Ответ 1

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

Ответ 2

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

Проблема в том, что Theme.Light и Theme.Holo.Light и таковые разработаны вокруг этой деятельности. Тема диалога должна основываться на такой теме, как @android: style/Theme.Dialog, который содержит свойства, специфичные для диалогов.

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

Попробуйте переопределить тему .Dialog, используя такие вещи, как:

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

Ответ 3

parent="android:style/Theme.Light"

Ответ 4

Попробуйте следующее:

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

Ответ 5

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

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