2011-06-14 16 views
107

El icono principal de mi aplicación consta de dos partes en una imagen: un logotipo y algunas letras debajo. Esto funciona bien para el ícono del iniciador de la aplicación, pero cuando el ícono aparece en el borde izquierdo de la barra de acciones, las letras se cortan y no se ve bien.Android: ¿Cómo cambiar el icono "Inicio" de ActionBar para que sea algo más que el ícono de la aplicación?

Me gustaría proporcionar al ActionBar una versión separada del ícono, con solo la parte del "logotipo" y no las letras debajo, pero hasta ahora han estado vacías. Honestamente, no puedo encontrar ninguna respuesta a esto, y ni siquiera puedo encontrar la pregunta en sí misma en ninguna parte.

Respuesta

217

El ActionBar utilizará el atributo android:logo de su manifiesto, si se proporciona uno. Eso le permite usar recursos dibujables por separado para el icono (Iniciador) y el logotipo (Barra de acción, entre otras cosas).

+2

Sí. También puede usar un estilo personalizado para su barra de acción para proporcionar un logotipo o icono que se utilizará en lugar de los proporcionados por el manifiesto. – adamp

+0

Muchas gracias por la información. Funciona para mí – DiegoAlt

+1

no funciona para API <11. ¿Alguna solución? – Apurva

0

posible que desee comprobar esto, tiene todo lo que necesita para sus iconos de aplicación

http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

actualización

creo que por defecto se utiliza el icono de lanzador ... Su mejor apuesta es crear una imagen separada ... Diseñado para la barra de acción y usar eso. Para ese control: http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems

+0

Gracias por ese enlace, y puede terminar la eliminación de las cartas de mi icono y utilizando el mismo icono "logotipo" a través de la aplicación, pero todavía puede necesitar utilizar una versión más pequeña de la misma, o una versión ligeramente diferente en ActionBar, y eso es lo que trato de averiguar. –

+0

Mi respuesta actualizó – Stevanicus

48

En AndroidManifest.xml:

<application 
    android:icon="@drawable/launcher" 
    android:label="@string/app_name" 
    android:name="com..." 
    android:theme="@style/Theme">...</Application> 

En styles.xml: (Ver android:icon)

<style name="Theme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/ActionBar</item> 
</style> 
<style name="ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:icon">@drawable/icon</item> 
</style> 
+0

* android: logo * también funcionará. No sé la diferencia. –

+0

Disculpa por desgarrar heridas sanadoras :-) Pero la diferencia es que la solución de cambio de estilo sugerida aquí aplica el ícono personalizado solo a la barra de acción, mientras que definir el 'android: logo' en el manifiesto también podría afectar otras áreas. – dbm

+0

@dbm, ¿podría dar un ejemplo de "otras áreas"? –

8

Si está utilizando AppCompat, la única manera de establecer el icono de la Barra de acciones en los dispositivos con pan de jengibre (API 10) o inferior es estableciendo el atributo android: icon en cada Activity en su manifiesto o configurando el drawable programáticamente.

<manifest> 
    <application> 
     ... 
     <activity android:name="com.your.ActivityName" 
      ... 
      android:icon="@drawable/ab_logo"/> 
     ... 
    </application> 
</manifest> 

Actualización: Se advierte sin embargo que el icono de la aplicación se anulará si se establece el androide: icono de atributo sobre la actividad de lanzamiento. El único trabajo que conozco es tener una Splash o Dummy Activity que luego inicia tu actividad principal.

+0

Utilizo su trabajo, pero el icono aún no se puede ver. –

+0

no funciona !! ¿Lo has probado? Por favor, encuentre una solución Lo necesito. – Apurva

7

Inspirado por TheIT, acabo de hacer que funcione manipulando el archivo de manifiesto, pero de una manera ligeramente diferente. Establezca el icono en la configuración de la aplicación para que la mayoría de las actividades obtengan el ícono. En la actividad en la que desea mostrar el logotipo, agregue el atributo logo de android: a la declaración de actividad. En el siguiente ejemplo, solo LogoActivity debería tener el logotipo, mientras que los demás se convertirán en ícono.

<application 
    android:name="com.your.app" 
    android:icon="@drawable/your_icon" 
    android:label="@string/app_name"> 

    <activity 
     android:name="com.your.app.LogoActivity" 
     android:logo="@drawable/your_logo" 
     android:label="Logo Activity" > 

    <activity 
     android:name="com.your.app.IconActivity1" 
     android:label="Icon Activity 1" > 

    <activity 
     android:name="com.your.app.IconActivity2" 
     android:label="Icon Activity 2" > 

</application> 

Espero que esto ayude a alguien más a salir!

+0

Estoy usando AppCompat v7, porque quiero soportar Android 2.3, pero tu método no funciona. –

3

creación de logotipo

en carpetas "drawable-..." crear en todos ellos logo.png. La ubicación de las carpetas: [YOUR APP]\app\src\main\res

En AndroidManifest.xml añadir la línea: android:logo="@drawable/logo"

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:logo="@drawable/logo" 
    ... 

eso es todo.

6

Por favor, intente esta línea

getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_arrow); 
0

favor Intenta, si el uso "se extiende AppCompatActivity" y el presente actionbar.

ActionBar eksinbar=getSupportActionBar(); 
if (eksinbar != null) { 
    eksinbar.setDisplayHomeAsUpEnabled(true); 
    eksinbar.setHomeAsUpIndicator(R.mipmap.imagexxx); 
} 
Cuestiones relacionadas