2011-10-31 21 views
30

我正在尝试使用ActionBarSherlock library为主页图标设置自定义图标。我试图在我的自定义主题中使用abHomeLayout属性来设置自定义布局。但它不适合我。只有这样,如何设置它,是为我的自定义drawable设置abIcon属性,但我无法为此drawable设置一些水平填充。有没有这样的例子或哪里可能是abHomeLayout属性的问题?夏洛克行动栏中的自定义首页图标

回答

40

这适用于我的情况,它代替了操作栏的默认图标ic_launcher与我的自定义一个。

在你的onCreate做到这一点:

getSupportActionBar().setIcon(R.drawable.audio_shortcut); 

或者在清单中可以设置标志:

<activity> 
    android:logo="@drawable/my_custom_logo" 
    ... 
</activity> 
+0

可以设置在清单中? Android开发者指南说要设置标志... –

-1

定义了自己的风格,就像这样:

<resources> 
    <style name="Theme.OwnTheme" parent="@style/Theme.Sherlock"> 
    <item name="abBackground">#476dd5</item> 
    <item name="abHeight">30dip</item> 
    </style> 
</resources> 

我想在这里你可以使用abHomeLayout。 设置这种风格为您的活动是这样的:

<activity 
android:name=".MainActivity" 
android:theme="@style/Theme.OwnTheme"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

在MainActivity你可以使用getSupportActionBar()...等功能。

+0

谢谢秒。如上所述,我尝试过'abHomeLayout'。没有成功,所以我需要一个工作的例子。 – sealskej

+2

这是一个如何使用ABS的例子,但根本不回答问题 –

0

我有类似的问题,与设备API < 11(即不完全成熟的平台操作栏)和abHomeLayout风格的主页图标不正确的填充只工作API> 11

我的解决办法是复制abs__action_bar_home.xml从布局到ABS项目儿童和手动添加填充到abs__home ImageView的

<ImageView 
    android:id="@+id/abs__home" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:paddingTop="@dimen/action_bar_home_icon_top_bottom_padding" 
    android:paddingBottom="@dimen/action_bar_home_icon_top_bottom_padding" 
    android:paddingLeft="@dimen/action_bar_home_icon_left_right_padding" 
    android:paddingRight="@dimen/action_bar_home_icon_left_right_padding" 
    android:scaleType="centerInside" /> 
+1

还有什么需要添加到您的样式等,以使其生效吗?我已经将同一个文件复制到我的项目的res/layout /中,但是对填充的调整似乎没有起作用。 – brk3

+0

错误的答案,甚至没有说如何应用此布局 –

5

这个伟大的工程太:

<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar"> 
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> 
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item> 
</style> 

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse"> 
    <item name="icon">@drawable/my_custom_logo</item> 
    <item name="android:icon">@drawable/my_custom_logo</item> 
</style> 

参考:How to change the ActionBar “Home” Icon to be something other than the app icon?