2011-11-22 18 views
5

¿Hay alguna manera de cambiar el logotipo que aparece en el ActionBar dentro de un Activity en lugar de incluirlo en el Manifiesto?Cambiar el logotipo que aparece en Android ActionBar programáticamente

La razón que pido es que tengo una aplicación para móviles, donde construyo un tipo similar de barra en la parte superior con el icono del lanzador en la esquina izquierda similar a la ActionBar utilizando un ImageView.

También le permito al usuario cambiar esa imagen a una en su teléfono o en internet. Actualmente estoy haciendo que la aplicación funcione para tabletas y me gustaría simplemente usar el ActionBar en su lugar, pero no puedo encontrar la manera de cambiar la imagen en función del usuario. No hay ningún método en la clase ActionBar y no pude encontrar una forma de modificar el icono o el logotipo de los recursos.

¿Alguien sabe si esto es posible o podría sugerir algo que podría probar?

Respuesta

10

API 14 introdujo setIcon y setLogo métodos.

En cuanto a 11 a 13 no hay fácil manera.

Posiblemente podría utilizar una navegación personalizada y ocultar el icono/logotipo regular haciendo que su propio diseño imite su funcionalidad.

No es un atributo homeLayout en el estilo de barra de acción que permite especificar un recurso diseño alternativo para ser utilizado, pero siempre habrá lanzar una ClassCastException ya que es instantáneamente convierte en una clase interna en la inflación (bug #21842).

+3

Ese atributo no fue hecho para hacerse público. Oops. :) – adamp

12

Antes de la introducción de la API 14 de los setIcon y setLogo métodos que Jake menciona, que parecen ser capaces de cambiar el logotipo de la Barra de acciones por el acaparamiento de la vista de android.R.id.home y el establecimiento de un nuevo estirable.

ImageView logo = (ImageView) findViewById(android.R.id.home); 
logo.setImageDrawable(drawable); 
Cuestiones relacionadas