Normalmente o logo da action bar é o mesmo do sistema, porem em alguns casos precisamos mudar isso, talvez pelo formato do logo ou até mesmo a exigência de quem está desenvolvendo o software.
Se você está desenvolvendo um sistema com a API minima V11 é bem simples, basta adicionar o atributo android:logo na tag <application> do Manifest (no mesmo lugar que é definido o icone).
Mais a ideia é desenvolver um aplicativo compatível com todas ou a maioria das plataformas, com isso utilizamos as bibliotecas de suporte do Android, e para customizar o logo da action bar devemos realizar os seguintes passos:
1 – Se houver o atributo android:logo na tag application do Manifest, RETIRE.
2 – Quando desenvolvemos um app normalmente DEVEMOS ter as pastas values / values-v11 / values-v14 ambas contem um arquivo de styles.xml. Na pasta values vamos customizar a actionBar e inserir o logo:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light"> <!-- Theme customizations available in newer API levels can go in res/values-vXX/styles.xml, while customizations related to backward-compatibility can go here. --> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <item name="actionBarStyle">@style/MyActionBar</item> </style> <!-- ActionBar styles --> <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar"> <!-- Support library compatibility --> <item name="logo">@drawable/logo_action</item> </style>
3 – Foi definido o logo para versões inferiores a V11, por isso devemos também alterar o styles.xml da pasta values-v11 e da values-v14 se houver
V11:
<resources> <!-- Base application theme for API 11+. This theme completely replaces AppBaseTheme from res/values/styles.xml on API 11+ devices. --> <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> <!-- API 11 theme customizations can go here. --> <item name="android:actionBarStyle">@style/MyActionBarV11</item> </style> <style name="MyActionBarV11" parent="@style/MyActionBar"> <item name="android:logo">@drawable/logo_action</item> </style> </resources>
V14:
<resources> <!-- Base application theme for API 14+. This theme completely replaces AppBaseTheme from BOTH res/values/styles.xml and res/values-v11/styles.xml on API 14+ devices. --> <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> <!-- API 14 theme customizations can go here. --> <item name="android:actionBarStyle">@style/MyActionBarV11</item> </style> </resources>
Pronto, desta forma temos nosso logo customizado na action bar para praticamente todas as versões do Android.