support studio item getsupportactionbar bar android image android-actionbar actionbarsherlock graphical-logo

android - studio - Imagen personalizada en lugar de logotipo en ActionBar/ActionBarSherlock



support action bar (4)

¿Cómo puedo cambiar el icono del logotipo predeterminado de una barra de acciones para que sea una imagen personalizada? Similar a cómo funciona en Whatsapp?


Necesita personalizar el ActionBarSherlock. Incluye un xml llamado "styles_mytheme.xml" en la carpeta de valores:

<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.Styled" parent="@style/Theme.Sherlock.Light"> <item name="actionBarStyle">@style/CustomActionBarStyle</item> <item name="android:actionBarStyle">@style/CustomActionBarStyle</item> <item name="android:actionBarItemBackground">@drawable/overflow_selector</item> <item name="android:itemBackground">@drawable/overflow_selector</item> <item name="android:actionBarWidgetTheme">@style/CustomActionOverflowDropDownText</item> <item name="actionBarWidgetTheme">@style/CustomTitleColorBar</item> <item name="android:icon">@drawable/ic_nav_home_back</item> <item name="android:homeAsUpIndicator">@drawable/ic_nav_back</item> <item name="icon">@drawable/ic_nav_home_back</item> <item name="dropDownListViewStyle">@style/DropDownStyles</item> <item name="android:dropDownListViewStyle">@style/DropDownStyles</item> </style> <style name="CustomActionBarStyle" parent="@style/Widget.Sherlock.ActionBar"> <!-- define background for action bar (sets default for all parts of action bar - main, stacked, split) --> <item name="android:background">@drawable/navigation</item> <item name="background">@drawable/navigation</item> <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item> <item name="titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item> </style> <!-- Style for the color title bar --> <style name="CustomTitleColorBar" parent="@style/TextAppearance.Sherlock.Widget.ActionBar.Title"> <item name="android:textColor">@color/white</item> <item name="android:textSize">12sp</item> </style> <style name="CustomActionOverflowDropDownText" parent="Widget"> <item name="android:textColor">@color/white</item> </style> <style name="MyTheme.ActionBar.TitleTextStyle" parent="@style/TextAppearance.Sherlock.Widget.ActionBar.Title"> <item name="android:textColor">@color/white</item> </style> <style name="My_Theme" parent="Theme.Sherlock"> <item name="android:popupMenuStyle">@style/MyApp.PopupMenuStyle</item> <item name="popupMenuStyle">@style/MyApp.PopupMenuStyle</item> </style> <style name="MyApp.PopupMenuStyle" parent="Widget.Sherlock.ListPopupWindow"> <item name="android:popupBackground">@drawable/navigation</item> </style> <style name="DropDownStyles" parent="Widget.Sherlock.ListView.DropDown"> <item name="android:divider">@null</item> <item name="android:listSelector">@drawable/overflow_selector</item> </style> </resources>

Ahora incluye este xml en el código:

setTheme(Theme.Styled);

Ahora cambie estas tres líneas, cuando cambie estas tres líneas, el ícono cambiará:

<item name="android:icon">@drawable/ic_nav_home_back</item> <item name="android:homeAsUpIndicator">@drawable/ic_nav_back</item> <item name="icon">@drawable/ic_nav_home_back</item>


La técnica más simple es usar setIcon (R.drawable.icon_name). De manera similar, puede hacerlo con el título y también puede establecer la fecha en el subtítulo de la barra de acciones.

ActionBar ab= getActionBar(); ab.setTitle("Aries"); ab.setSubtitle(dateFormat.format(date)); ab.setIcon(R.drawable.aries3d);


if(getSupportActionBar() != null) { getSupportActionBar().setDisplayUseLogoEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIcon(R.drawable.add_contact); }


ActionBar usa 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).

Entonces deberías agregar esta etiqueta en manifiesto como ...

<application android:logo="@drawable/custom_image"

Actualización:

Puede usar ActionBar.setLogo() para el tiempo de ejecución. Hay dos versiones setLogo (int resId) y setLogo (logotipo extraíble) .

Leer ¿ Definir el logotipo personalizado para ActionBar (diferente de Logo) en XML? que te ayudará a definir algunos estilos también.