【问题标题】:Custom image instead of logo in ActionBar/ActionBarSherlockActionBar/ActionBarSherlock 中的自定义图像而不是徽标
【发布时间】:2013-10-10 22:13:14
【问题描述】:

如何将 ActionBar 的默认徽标图标更改为自定义图像?类似于它在 Whatsapp 上的工作方式?

【问题讨论】:

标签: android image android-actionbar actionbarsherlock graphical-logo


【解决方案1】:

ActionBar 使用清单的android:logo 属性(如果提供的话)。这使您可以为图标(启动器)和徽标(ActionBar 等)使用单独的可绘制资源。


所以你应该将此标签添加到清单中,如 ..

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

更新:

您可以在运行时使用ActionBar.setLogo()。有两个版本setLogo(int resId)setLogo(Drawable logo)

阅读Define custom Logo for ActionBar (different than Logo) in XML?,这也将帮助您定义一些样式。

【讨论】:

  • 是的。我对此很清楚。问题是我想为该图标设置自定义图像。在 whatsapp 中,该图像是朋友的个人资料图片(在运行时指定)。
  • 你可以使用ActionBar.setIcon(Drawable)
  • @carlos ..你找到解决方案了吗..我有同样的要求..提前谢谢
  • 它不工作,我不知道为什么。我什么都试过了
  • @FaizanMubasher 什么不起作用?你能用你的代码问一个单独的问题吗?
【解决方案2】:

最简单的方法是使用 setIcon(R.drawable.icon_name) 类似地你可以用 Title 来做,你也可以在 action bar subtitle 中设置日期。

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

【讨论】:

    【解决方案3】:

    您需要自定义 ActionBarSherlock。在 values 文件夹中包含一个名为“styles_mytheme.xml”的 xml:

    <?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>
    

    【讨论】:

      【解决方案4】:
      if(getSupportActionBar() != null) {
              getSupportActionBar().setDisplayUseLogoEnabled(true);
              getSupportActionBar().setDisplayShowHomeEnabled(true);
              getSupportActionBar().setIcon(R.drawable.add_contact);
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-18
        • 1970-01-01
        相关资源
        最近更新 更多