Cambiar el estilo de los Dialogs en Android

La API de Android ofrece al desarrollador la posibilidad de mostrar un mensaje y permitir varias opciones al usuario a través de los Dialogs.

Hoy me he encabezonado en que el título y la barra del título de los Dialogs tengan el color característico de la aplicación. Me ha costado dos horas y leer un montón de preguntas en StackOverflow. Últimamente se pregunta cualquier cosa pero cuando buscas y ves que se ha hecho casi 10 veces la misma pregunta, notas que algo falla y que la API no está bien diseñada.

Me imaginaba que bastaría con definir un estilo sobre el tema Holo de Android. Nada más lejos de la realidad. Como se indica en esta respuesta, los estilos de los Dialogs son internos y no se sobreescriben por los propios.

Para rodear el problema se puede usar la librería QustomDialog, pero esta vez buscaba la solución de parte de Android. Hay cuatro Dialogs en la aplicación y aunque seguir el mismo estilo en todas las vistas me parece muy importante, prefiero no depender de otra librería más para cambiar el color de algunos elementos.

Leyendo esta respuesta encontré la solución que me convenció que consiste en heredar de AlertDialog para modificar internamente el color de la barra, y en esta otra encontré cómo cambiar el color del texto.

Esto rompe con una de las máximas de la orientación a objetos que es la ocultación. Literalmente, mi código ahora depende del identificador del elemento, un valor  privado que debería estar oculto. Mi implementación está sujeta a que ese valor sea siempre el mismo y a que si actualizo a una API de Android más reciente, tenga que comprobar que ese valor no ha cambiado.

Obviamente, esta frágil dependencia no ocurriría si la API de los Dialogs desde la 10 permitiese modificar el estilo a través de su propio diseño. Recemos porque se solucione en próximas versiones de la librería Support.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s