30

我正在尝试使用ActionBarSherlock 库为主页图标设置自定义图标。我试图abHomeLayout在我的自定义主题中使用属性设置自定义布局。但这对我不起作用。唯一的方法,如何设置它,是abIcon为我的自定义drawble设置属性,但我不能为这个drawable设置一些水平填充。有没有这方面的例子,或者abHomeLayout属性可能在哪里出现问题?

4

4 回答 4

40

这适用于我的情况,它将操作栏中的默认 ic_launcher 图标替换为我的自定义图标。

在你的 onCreate 中这样做:

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

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

<activity>
    android:logo="@drawable/my_custom_logo"
    ...
</activity>
于 2012-06-03T20:23:18.707 回答
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>

参考:如何将ActionBar“主页”图标更改为应用程序图标以外的东西?

于 2013-06-27T15:44:29.087 回答
0

我在设备 api<11(即不是完全成熟的平台操作栏)上的主图标填充不正确时遇到了类似的问题,并且abHomeLayout样式仅适用于 api>11

我的解决方案是将布局从 ABS 复制abs__action_bar_home.xml到子项目并手动将填充添加到abs__homeimageview

<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" />
于 2012-02-08T13:09:51.690 回答
-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()... 函数。

于 2011-11-01T07:27:14.390 回答