PDA

Ver la Versión Completa : Cambio de iconos segun tema de actionbar


Expectro
07/09/12, 22:27:32
Hola,

Estoy empezando en esto de programar aplicaciones para Android y no se si será posible lo que quiero hacer...

Resulta que estoy utilizando la actionbarsherlock y me he preparado una Activity que hereda de SherlockActivity ( de la cual heredarán despues las demás clases de mi aplicación) y según el tema seleccionado ( en preferencias ) selecciono un estilo para la aplicación.

Este código uso para cambiar según el tema que está seleccionado.

private void changeTheme() {
String value;
value = getActualTheme(); // da el valor del tema seleccionado sacandolo de las preferences

if (value.compareTo(THEME_DARK_NUMBER) == 0) {
setTheme(THEME_DARK);

} else if (value.compareTo(THEME_LIGHT_NUMBER) == 0) {
setTheme(THEME_LIGHT);

} else if (value.compareTo(THEME_LIGHT_DARK_ACTIONBAR_NUMBER ) == 0) {
setTheme(THEME_LIGHT_DARK_ACTIONBAR);

}
}


El problema es cuando tengo que cargar el menu del actionbar, que segun el estilo elegido los iconos no se ven al ser negros o blancos.
Para solucionarlo he realizado una función para detectar el tema y a partir de ahí elegir un menú u otro ( de un xml ).


private int menu(Activity a , int menu ) {
int type = getColor(a);
if (menu == MENU_MENUACTIVITY ){
if (type == 1)
return R.menu.activity_menu;
else
return R.menu.activity_menu_light;
}
return (Integer) null;
}

private int getColor(Activity a){
String value;
value = getActualTheme();

if (value.compareTo(THEME_DARK_NUMBER) == 0) {
return 1;
}else if (value.compareTo(THEME_LIGHT_NUMBER) == 0) {
return 2;
}else if (value.compareTo(THEME_LIGHT_DARK_ACTIONBAR_NUMBER ) == 0) {
return 1;
}else{
return 1;
}
}


Lo que pasa que cada vez que añado una nueva activity tengo que modificar este metodo añadiendo la nueva activity y la constante nueva para pasarle.

La pregunta es... se puede realizar de alguna forma no tenga que modificar la clase "base" cada vez que añado una nueva activity??

Saludos y gracias

Expectro
09/09/12, 13:14:13
Nadie? Sino tendré que hacerle de esa forma

Enviado desde mi LT18i usando Tapatalk 2