AlertDialog Tema: ¿Cómo cambiar el color del texto del artículo?

Cuando intento aplicar un tema estándar a AlertDialog

 AlertDialog.Builder builder = new AlertDialog.Builder(MyClass.this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT); builder.setTitle("Change"); String[] info= this.getResources().getStringArray(R.array.info); ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.select_dialog_singlechoice); arrayAdapter.addAll(info); builder.setSingleChoiceItems(arrayAdapter, .... 

Resultado:

Introduzca aquí la descripción de la imagen

La nota es que no tengo ningún problema con builder.setItems(...) ya que su color de texto es Black mientras que el tema aplicado con builder.setSingleChoiceItems(...) tiene un color de texto blanco.

¿Alguna solución rápida? O cualquier forma de crear un tema personalizado basado en AlertDialog.THEME_DEVICE_DEFAULT_LIGHT ?

Mi estilo personalizado no funciona como se esperaba:

 <style name="AlertDialogCustomTheme" android:parent="android:Theme.Dialog"> <item name="android:textColor">#7ABDFF</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <!--THE FOLLOWING ITEMS HAVE NOT EFFECT ... !! --> <item name="android:layout_centerHorizontal">true</item> <item name="android:layout_centerVertical">true</item> <item name="android:textColorAlertDialogListItem">#A844BD</item> <item name="android:itemBackground">#7ABDFF</item> </style> 

Actualizar

@lopez respuesta es una solución completa, pero me parece una sola línea de solución para mi problema, un tema personalizado que se aplicará a la actividad en manifiesto:

 <style name="MyTheme"> <item name="android:textColorAlertDialogListItem">@android:color/black</item> </style> 

Si alguien lee esto, y está usando los cuadros de diálogo Alert de la biblioteca Suport y quiere cambiar el color del texto de los elementos de la lista, entonces suelte el android: part, así:

 <item name="textColorAlertDialogListItem">@color/your_color</item> 

Personalmente, uso el cuadro de Dialog Android pero uso un diseño personalizado para que coincida con el diseño de mi aplicación.

Aquí hay un ejemplo:

 new AlertDialog.Builder(context) .setView(inflater.inflate(R.layout.dialog_delete_contact, null)) .setPositiveButton(context.getResources().getString(android.R.string.ok).toUpperCase(), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // YOUR TREATMENT } }) .setNegativeButton(context.getResources().getString(android.R.string.cancel).toUpperCase(), null) .show(); 

Diseño:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/GrayLight" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:background="@color/Black" android:gravity="center" android:orientation="horizontal" tools:ignore="DisableBaselineAlignment" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:layout_weight="2" android:gravity="center" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name" android:fitsSystemWindows="true" android:padding="10dip" android:src="@drawable/ic_launcher" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:layout_marginRight="20dp" android:layout_weight="0.5" android:gravity="center" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/remove_contact" android:textColor="@color/White" android:textSize="20sp" android:textStyle="bold" tools:ignore="HardcodedText" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:gravity="center" android:orientation="vertical" tools:ignore="DisableBaselineAlignment" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="10dp" android:paddingLeft="20dp" android:paddingRight="20dp" android:paddingTop="20dp" android:text="@string/ask_remove_contact" android:textSize="15sp" tools:ignore="HardcodedText" /> </LinearLayout> 

Resultado en la imagen:

Introduzca aquí la descripción de la imagen

Para evitar volver a escribir el código cada vez que aquí es una clase de utilidad:

 public class MyDialog { public static Builder create(final Context context, final LayoutInflater layoutInflater, final String title, final String content) { View view = layoutInflater.inflate(R.layout.generic_dialog, null); ((TextView)view.findViewById(R.id.textViewTitleDialog)).setText(title); ((TextView)view.findViewById(R.id.textViewContentDialog)).setText(content); return new AlertDialog.Builder(context).setView(view); } } 

Y un ejemplo de uso:

 AlertDialog.Builder myDialog = MyDialog.create(this, getLayoutInflater(), "Quitter ECOLEMS", "Voulez-vous vraiment quitter l'application?"); myDialog.setPositiveButton("Oui", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // YOUR TREATMENT } }) .setNegativeButton("Non", null) .show(); 

¡Espero que hayas ayudado!

 AlertDialog.Builder builder = new AlertDialog.Builder(MyClass.this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT); builder.setTitle("Change"); String[] info= this.getResources().getStringArray(R.array.info); ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.select_dialog_singlechoice); arrayAdapter.addAll(info); builder.setSingleChoiceItems(arrayAdapter, ....**change this line to** builder.setSingleChoiceItems(info,0,null); 
  • Cómo establecer el tema para ProgressBar indeterminista en ProgressDialog en Android
  • Tema de fondo con estilos y temas
  • Android: Cómo cambiar los atributos del tema dinámicamente en tiempo de ejecución de código
  • Cambio del icono de la barra de acciones
  • Tema Programáticamente establecido. Cómo volver a cargar Actividad para aplicar
  • Cómo cambiar el estilo de pestaña en Android?
  • Elementos del menú de desbordamiento denominados barra de acción
  • ¿Cómo agregar atributos de varios temas a la misma actividad en el manifiesto de Android?
  • Escribir aplicaciones temáticas en Android
  • Barra de herramientas de AppCompat popupTheme no se utiliza en ShareAction MenuItem
  • PhoneGap 3.x Android - Tema de Popup / Dialog nativo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.