Cómo cambiar la línea azul en el AlertDialog (tema Holo)

Quiero cambiar el color del título azul y la línea azul que viene en AlertDialog (tema de Holo), pude cambiar el color del título mirando en android styles.xml y themes.xml pero no puedo encontrar ninguna propiedad o estilo Que puedo utilizar / cambiar para cambiar el color de mi XML.

El siguiente es el estilo que estoy usando para cambiar el color del título

<style name="myAlertDialog" parent="android:Theme.Holo.Dialog"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowTitleStyle">@style/myAlertDialogTitleStyle</item> </style> <style name="myAlertDialogTitleStyle"> <item name="android:maxLines">1</item> <item name="android:scrollHorizontally">true</item> <item name="android:textAppearance">@style/myAlertDialogTitleStyleTextAppearance</item> </style> <style name="myAlertDialogTitleStyleTextAppearance"> <item name="android:textSize">22sp</item> <item name="android:textColor">#ffff8800</item> </style> 

EDIT: Estaba equivocado en mi respuesta original.

Desafortunadamente, los estilos utilizados para los diálogos son internos y no pueden usarse de la misma manera que algunos de los otros elementos holo fáciles de manipular. He creado un proyecto de código abierto para tratar con esto en situaciones muy simples (espero extenderlo por el camino y hacerlo más .. legit). Aquí está un enlace a una nueva respuesta que aborda esto más en profundidad: ¿Cómo puedo cambiar el color del título de AlertDialog y el color de la línea debajo


Para la posteridad, aquí está mi vieja y ingenua respuesta:

Mira la respuesta publicada aquí . Para su objetivo particular, usted querrá estar sobreescribiendo el estilo de dialogTitleDecorLayout ( creo! ) En comparación con el estilo listSeparatorTextViewStyle .

Si tiene curiosidad de saber dónde está configurado originalmente, puede explorar el archivo themes.xml en la carpeta android sdk de su computadora y buscar el atributo dialogTitleDecorLayout . Esto debería conducir a un archivo de diseño dialog_title_holo que también debería estar en su computadora. Allí usted debe encontrar el código siguiente dentro del diseño:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:fitsSystemWindows="true"> <TextView android:id="@android:id/title" style="?android:attr/windowTitleStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="60dip" android:paddingLeft="32dip" android:paddingRight="32dip" android:gravity="center_vertical|left" /> <ImageView android:id="@+id/titleDivider" android:layout_width="match_parent" android:layout_height="4dip" android:scaleType="fitXY" android:gravity="fill_horizontal" android:paddingLeft="16dip" android:paddingRight="16dip" android:src="@android:drawable/divider_strong_holo" /> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:foreground="?android:attr/windowContentOverlay"> <FrameLayout android:id="@android:id/content" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> </LinearLayout> 

El código de la nota es el @android:drawable/divider_strong_holo referencia. Este archivo también existe en su computadora y debe ser un 9patch azul. Usted necesitará crear un 9patch similar de un diverso color. ¡Buena suerte! Incluso si esto no es exactamente el atributo correcto creo que ves lo que necesitas hacer aquí …

Después de algunos ajustes, he llegado con una manera de volver a marcar el diálogo en el momento en que se muestra:

 private AlertDialog showWithThemeColors() { Log.d(TAG, "showWithThemeColors()"); AlertDialog dialog = this.builder.show(); try { ViewGroup decorView = (ViewGroup) dialog.getWindow().getDecorView(); FrameLayout windowContentView = (FrameLayout) decorView.getChildAt(0); FrameLayout contentView = (FrameLayout) windowContentView.getChildAt(0); LinearLayout parentPanel = (LinearLayout) contentView.getChildAt(0); LinearLayout topPanel = (LinearLayout) parentPanel.getChildAt(0); View titleDivider = topPanel.getChildAt(2); LinearLayout titleTemplate = (LinearLayout) topPanel.getChildAt(1); TextView alertTitle = (TextView) titleTemplate.getChildAt(1); int textColor = this.context.getResources().getColor(R.color.customer_text_on_primary); alertTitle.setTextColor(textColor); int primaryColor = this.context.getResources().getColor(R.color.customer_primary); titleDivider.setBackgroundColor(primaryColor); } catch (Exception e) { Log.e(TAG, "showWithThemeColors() - Could not re-brand dialog with theme colors.", e); } return dialog; } 

Tenga en cuenta que esta solución puede romper en cualquier momento el diseño del sistema subyacente para los cambios de diálogo. Sin embargo, es el diálogo del sistema original con todas las ventajas de tal solución.

Hay una biblioteca que hace exactamente eso para todos sus diálogos:

https://github.com/inmite/android-styled-dialogs

  • Mantener el receptor de difusión funcionando después de cerrar la aplicación
  • Error al seleccionar texto de Textview (java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) comienza antes de 0)
  • Android / Java: acceso al mismo objeto de base de datos SQLite desde múltiples actividades
  • ¿Cómo hacer una pausa con DownloadManager?
  • ¿El constructor de la clase privada interna también es privado?
  • cómo corregir "Declaración de devolución faltante" en java
  • Cómo establecer la unidad para Paint.setTextSize ()
  • Android Bitmap.createBitmap () rellena montón
  • Para cada uno dentro de un para cada - Java
  • Cómo guardar la imagen a través de la captura en android a php?
  • Cómo girar un marcador en OSMDroid para Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.