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:
- Recurso para descargar temas / estilos de aplicación de Android?
- El botón de radio creado dinámicamente o CheckBox no utiliza el acento de color
- Cómo establecer un tema diferente en un diseño
- Barra de herramientas de AppCompat popupTheme no se utiliza en ShareAction MenuItem
- Cómo cambiar el color de texto del elemento de menú desbordamiento a un color diferente mediante el tema de la barra de acción de Sherlock
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>
- Android: No se puede diseñar el divisor de hilado
- PreferenciaLa actividad y el tema no se aplican
- Barra de acción de Android barra divisora de barras
- Tema Programáticamente establecido. Cómo volver a cargar Actividad para aplicar
- El cambio de tema no funciona en <4.0 como debería
- No se puede hacer referencia al tema Holo desde valores-v11 / themes.xml
- Android: ¿cómo cambiar el color del divisor datepicker?
- Error al importar HoloEverywhere
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:
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);
- ¿Por qué Android Eclipse constantemente actualiza las carpetas externas y toma forver?
- ¿Cómo obtener la fuerza de conexión de los puntos de acceso Wifi?