Android:如何将ActionBar"Home"图标更改为应用程序图标以外的其他内容?

Phi*_*uth 113 android android-3.0-honeycomb android-actionbar

我的应用程序的主图标由一个图像中的两个部分组成:徽标和下面的几个字母.这适用于应用程序的启动器图标,但当图标出现在ActionBar的左边缘时,字母会被切断并且看起来不太好.

我想为ActionBar提供一个单独的图标版本,只有"徽标"部分,而不是它下面的字母,但到目前为止一直是空的.老实说,我找不到任何答案,我甚至无法在任何地方找到问题.

Joe*_*Joe 218

如果提供了清单,ActionBar将使用清单的android:logo属性.这使您可以为图标(Launcher)和徽标(ActionBar等)使用单独的可绘制资源.

  • 是的.您还可以使用操作栏的自定义样式来提供徽标或图标,以代替清单提供的徽标或图标. (2认同)

Ali*_*aka 48

在AndroidManifest.xml中:

<application
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:name="com..."
    android:theme="@style/Theme">...</Application>
Run Code Online (Sandbox Code Playgroud)

在styles.xml中:(见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>
Run Code Online (Sandbox Code Playgroud)

  • 是的,我非常好奇,我开始谷歌搜索,这是Android开发者网站所说的:http://developer.android.com/guide/topics/manifest/application-element.html#logo.我不清楚这与`ororid:icon`属性有何不同,但是:http://developer.android.com/guide/topics/manifest/application-element.html#icon (2认同)
  • [Action Bar doc](http://developer.android.com/guide/topics/ui/actionbar.html#Logo)也说你可以将`android:icon`添加到`<activity>`元素中,这样就可以了轻松改变它以适应不同的活动.我试过了,效果很好.无需弄乱自定义主题或担心影响所有活动. (2认同)

The*_*mer 15

请试试这一行

getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_arrow);
Run Code Online (Sandbox Code Playgroud)


The*_*eIT 8

如果您正在使用AppCompat,在运行Gingerbread(API 10)或更低版本的设备上设置ActionBar图标的唯一方法是在清单中的每个Activity中设置android:icon属性或以编程方式设置drawable.

<manifest>
    <application>
        ...
        <activity android:name="com.your.ActivityName"
            ...
            android:icon="@drawable/ab_logo"/>
        ...
   </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

更新:请注意,如果在启动活动上设置了android:icon属性,则会覆盖应用程序图标.我所知道的唯一工作就是有一个启动或虚拟活动,然后启动你的主要活动.


pro*_*dad 8

受到TheIT的启发,我只是通过操纵清单文件来实现这一点,但方式略有不同.在应用程序设置中设置图标,以便大多数活动获得图标.在要显示徽标的活动上,将android:logo属性添加到活动声明中.在以下示例中,只有LogoActivity应具有徽标,而其他徽标则默认为图标.

<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>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助其他人!


小智 6

请尝试,如果使用“扩展 AppCompatActivity”并显示操作栏。

 ActionBar eksinbar=getSupportActionBar();
if (eksinbar != null) {
    eksinbar.setDisplayHomeAsUpEnabled(true);
    eksinbar.setHomeAsUpIndicator(R.mipmap.imagexxx);
}
Run Code Online (Sandbox Code Playgroud)