2016-12-16 3 views
1

Я только что обновил версию библиотеки в своем приложении, и теперь цвет текста кнопок AlertDialog белый. До этого атрибут colorAccent указывал их, если я правильно помню. Я пробовал много разных атрибутов, и никто из них не работает.Цвет текста диалогового окна предупреждения с использованием стилей

Пример фото - в правом нижнем углу вы можете увидеть кнопку, которая является довольно Invisble:

enter image description here

Мой текущий диалог предупреждения стиль:

<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="colorAccent">@color/website_main</item> 
    <item name="android:textColor">@color/website_main</item> 
</style> 

В моем стиле тему:

<item name="android:alertDialogStyle">@style/AlertDialogStyle</item> 

Текущая версия поддержки/дизайна/appcompat I ' м при использовании является: 25.1.0

Java-код, в котором я создать AlertDialog:

android.support.v7.app.AlertDialog.Builder alertDialogBuilder = new android.support.v7.app.AlertDialog.Builder(activity); 
    alertDialogBuilder 
      .setCancelable(false) 
      .setPositiveButton(activity.getString(R.string.ok), new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        <UnrelatedLogic...> 
       } 
      }); 
    return alertDialogBuilder.show(); 

В здесь я использую ListPreference, который также использует AlertDialog:

android.support.v7.preference.ListPreference lang_preference = (android.support.v7.preference.ListPreference) findPreference("language_chooser"); 

Есть предложения?

+0

Это настраиваемый диалог? – Programmer

+0

No.Это обычное диалоговое окно предупреждения, которое также происходит в диалоговом окне настроек по умолчанию. –

+0

Можете ли вы опубликовать код операции, в котором вы показываете этот alertdialog? Это поможет ответить на вопрос. – Programmer

ответ

4

Это может быть использование для you.This мой enter image description here оповещения Диалог Стиль:

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
     <item name="colorAccent">@color/teal</item> 
     <item name="android:textColorPrimary">@color/bg_3</item> 
     <item name="android:background">@color/bg_border</item> 
    </style> 

Использование стиля в деятельности/адаптер

AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.AppCompatAlertDialogStyle); 
+0

Проблема в том, что это конкретное решение. В моих диалоговых окнах настроек это также происходит, поэтому решение должно менять основную тему приложения. –

+0

Эти изменения применяются только к Dialog, но не для всего приложения. –

+1

Такая же проблема, с которой я столкнулся –

1

Это немного сбивает с толку, но alertDialogStyle предназначен для стиля поле Dialog, а не любые дочерние представления, которые он содержит (хотя это, по-видимому, не всегда так). Из documentation:

При применении стиля к одному View в макете, свойство , определяемое стиль применяется только к этому View. Если стиль применяется к ViewGroup, то дочерние элементы View не наследуют свойства стиля . Применяются только те элементы, к которым вы непосредственно применяете стиль . Тем не менее, вы можете применить стиль , который применяется ко всем элементам View, применяя стиль в качестве темы.

Таким образом, вы должны применить стиль как тему; который есть также атрибут:

<item name="android:alertDialogTheme">@style/AlertDialogStyle</item> 

Наконец, textColor атрибут должен изменить цвет заголовка и тела текста, а не цвет текста кнопок. Вам нужно только применить атрибут colorAccent, чтобы покрасить текст кнопки:

<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="colorAccent">@color/website_main</item> 
</style> 
+0

Спасибо за ваш ответ, но он не работает для меня ... –

+0

@ DannyHambourg Что он делает (если вообще)? Кроме того, какую версию Android вы используете? Наконец, попробуйте 'alertDialogTheme' вместо' android: alertDialogTheme'; это может быть связано с AppCompat. – Bryan

+0

Снятие андроида! Благодаря! –

Смежные вопросы