Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 07/09/12, 22:27:32
Array

[xs_avatar]
Expectro Expectro no está en línea
Usuario muy activo
 
Fecha de registro: jul 2011
Mensajes: 751
Modelo de smartphone: Nexus 5 32 GB Black
Tu operador: Jazztel
Cambio de iconos segun tema de actionbar

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.
Código:
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 ).

Código:
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

Última edición por Expectro Día 07/09/12 a las 22:33:53.
Responder Con Cita


  #2  
Viejo 09/09/12, 13:14:13
Array

[xs_avatar]
Expectro Expectro no está en línea
Usuario muy activo
 
Fecha de registro: jul 2011
Mensajes: 751
Modelo de smartphone: Nexus 5 32 GB Black
Tu operador: Jazztel
Nadie? Sino tendré que hacerle de esa forma

Enviado desde mi LT18i usando Tapatalk 2
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android

Herramientas


Hora actual: 06:42:57 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /