Пользовательское изображение вместо логотипа в ActionBar/ActionBarSherlock
Как я могу изменить значок логотипа по умолчанию ActionBar, чтобы быть пользовательским изображением? Как это работает на Whatsapp?
4 ответов
ActionBar использует android: логотип атрибут вашего манифеста, если он предоставлен. Это позволяет использовать отдельные привлекаемые ресурсы для значка (Launcher) и логотипа (ActionBar, среди прочего).
поэтому вы должны добавить этот тег в manifest like ..
<application
android:logo="@drawable/custom_image"
обновление :
можно использовать ActionBar.setLogo()
для исполнения. Есть две версии setLogo (int resId) и setLogo (Drawable Логос).
читать определить пользовательский логотип для ActionBar (отличается от логотипа) в XML?, который поможет вам определить некоторые стили также.
самый простой метод-использовать setIcon (R. drawable.icon_name) аналогично вы можете сделать с заголовком, и вы также можете установить дату в подзаголовке панели действий.
ActionBar ab= getActionBar();
ab.setTitle("Aries");
ab.setSubtitle(dateFormat.format(date));
ab.setIcon(R.drawable.aries3d);
вам нужно настроить ActionBarSherlock. Включите xml под названием " styles_mytheme.xml " в папке values:
<?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>
теперь включите этот xml в код:
setTheme(Theme.Styled);
теперь измените эти три строки, Когда вы измените эти три строки, значок изменится:
<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>
if(getSupportActionBar() != null) {
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.add_contact);
}