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); 
  • Cambio de tema de aplicación a nivel de programación?
  • Android: ¿Acabo de tener un disparo por propiedad mediante el uso de temas? ¿No hay nada como CSS en Android?
  • Barra de estado de Android transparente cuando se utiliza AppTheme.NoActionBar
  • Diseño de widget Android - fondo negro predeterminado
  • Estilo ICS en aplicaciones Froyo y Gingerbread
  • Android ActionBar no cambia el color de fondo
  • Tema de DatePickerDialog de Android 6.0
  • Cambiar el tema en java no cambia el color de fondo
  • Utilice el cuadro combinado Tema encima del diseño para elegir un diseño diferente o corrija las referencias de estilos del tema
  • Cómo aplicar estilo personalizado global a android.support.design.widget.TextInputEditText?
  • Color del selector de lista de Android 4.4 Kit Kat
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.