Установить Android Theme.Light для оповещения Диалог - PullRequest
27 голосов
/ 18 июля 2011

Я пытаюсь установить тему 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>

К сожалению, я все еще получаю тему по умолчанию Тема.Dialog.Alert тема.Кто-нибудь может сказать мне, почему?Куда я иду не так?

РЕДАКТИРОВАТЬ : Если вы не знаете ответ на мой вопрос, пожалуйста, проголосуйте.У меня плохая привычка публиковать вопросы, которые застряли: (

Ответы [ 5 ]

6 голосов
/ 18 июля 2011

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

3 голосов
/ 02 августа 2012

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

Проблема в том, что 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>
1 голос
/ 23 августа 2016

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

<style name="popup_theme" parent="Theme.AppCompat.Light.Dialog.Alert">
1 голос
/ 10 ноября 2011
parent="android:style/Theme.Light"
0 голосов
/ 29 декабря 2017

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

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