Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 07/09/12, 22:27:32
Avatar de Expectro
Expectro Expectro no está en línea
Usuario muy activo
Mensajes: 751
 
Fecha de registro: jul 2011
Mensajes: 751
Modelo de smartphone: Nexus 5 32 GB Black
Tu operador: Jazztel
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de Expectro
Expectro Expectro no está en línea
Usuario muy activo
Mensajes: 751
 
Fecha de registro: jul 2011
Mensajes: 751
Modelo de smartphone: Nexus 5 32 GB Black
Tu operador: Jazztel
Mencionado: 0 comentarios
Tagged: 0 hilos
Nadie? Sino tendré que hacerle de esa forma

Enviado desde mi LT18i usando Tapatalk 2
Responder Con Cita
Respuesta

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


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 23:34:23 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007