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

时间:2011-06-14 23:46:43

标签: android android-3.0-honeycomb android-actionbar

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

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

7 个答案:

答案 0 :(得分:218)

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

答案 1 :(得分:48)

在AndroidManifest.xml中:

<application
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:name="com..."
    android:theme="@style/Theme">...</Application>

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

答案 2 :(得分: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>

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

答案 3 :(得分:7)

受到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>

希望这可以帮助其他人!

答案 4 :(得分:3)

创建徽标

在文件夹&#34; drawable-...&#34;在所有人logo.png中创建。 文件夹的位置:[YOUR APP]\app\src\main\res

在AndroidManifest.xml中添加行:android:logo="@drawable/logo"

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:logo="@drawable/logo"
    ...

是的。

答案 5 :(得分:2)

请尝试,如果使用&#34;扩展AppCompatActivity&#34;并提出行动条。

 ActionBar eksinbar=getSupportActionBar();
if (eksinbar != null) {
    eksinbar.setDisplayHomeAsUpEnabled(true);
    eksinbar.setHomeAsUpIndicator(R.mipmap.imagexxx);
}

答案 6 :(得分:0)

可能想检查一下,获得应用程序图标所需的一切

http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

<强>更新

我认为默认情况下它会使用你的启动器图标......最好的办法就是创建一个单独的图像...专为操作栏设计并使用它。对于该检查:http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems