2013-02-26 2 views
0

Я меняю тему приложения с помощью этого кода:Неправильный стиль AlertDialog с setSingleChoiceItems после setTheme()

MainActivity.java:

setTheme(R.style.AppBlackTheme); 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

styles.xml:

<style name="AppTheme" parent="android:Theme.Light" /> 
<style name="AppBlackTheme" parent="android:Theme.Black" /> 

И затем создаст AlertDialog:

SimpleAdapter simpleAdapter=new SimpleAdapter(this, listItems, R.layout.templates_list_item, new String[] {"name","descr"}, new int[] {R.id.name,R.id.descr}); 
AlertDialog.Builder alert = new AlertDialog.Builder(this); 
alert.setSingleChoiceItems(simpleAdapter, -1, new OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       //... 
      } 
     }); 
alert.show(); 

Но в Android 2.1 этот AlertDialog отображается на белом фоне и белом тексте. Как это исправить?

ответ

1

Пожалуйста, попробуйте: setInverseBackgroundForced(true)

+0

Извините, но это не помогает (ничего не изменилось). – BArtWell

+0

работал в темных диалоговых окнах предупреждения в android 2.1 – HimalayanCoder

1

Вы используете по умолчанию Android Theme. Это означает, что ОС решит цвета. Если вы сами устанавливаете цвета, это может случиться, что вы мешаете стандартной теме.

Попробуйте настроить или использовать собственную тему. см. следующий раздел для получения дополнительной информации.

How to change theme for AlertDialog

+0

Я пробовал это, но это не помогает ... android: textColor не меняет текст элементов списка ListView. – BArtWell

+0

Вы изменили файл R.layout.templates_list_item? Какой цвет есть текст? – QVDev

+0

Нет, я не изменил его. Но как его изменить? R.layout.templates_list_item не имеет цвета директиву: ... ... – BArtWell

0

Теперь я могу это сделать:

значения/styles.xml:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    <style name="AppTheme" parent="android:Theme.Light"> 
     <item name="alert_text_color">@android:color/black</item> 
    </style> 
    <style name="AppBlackTheme" parent="android:Theme.Black"> 
     <item name="alert_text_color">@android:color/black</item> 
    </style> 
</resources> 

значения-v11/styles.xml:

<resources> 
    <style name="AppTheme" parent="android:Theme.Holo.Light" > 
     <item name="alert_text_color">@android:color/black</item> 
    </style> 
    <style name="AppBlackTheme" parent="android:Theme.Holo" > 
     <item name="alert_text_color">@android:color/white</item> 
    </style> 
</resources> 

значения/ATTRS. xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="customAttrs"> 
     <attr name="alert_text_color" format="reference" /> 
    </declare-styleable> 
</resources> 

и в макете (templates_list_item):

<TextView 
    android:id="@+id/name" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="?attr/alert_text_color" /> 
Смежные вопросы