如果要覆盖 ActionBarSherlock
的主题,您应该按照以下步骤进行:
从 ActionBarSherlock
库项目中打开 values/abs__themes.xml
。您将看到类似以下内容的代码:
<style name="Theme.Sherlock" parent="Sherlock.__Theme">
<!
<item name="actionDropDownStyle">@style/Widget.Sherlock.Spinner.DropDown.ActionBar</item>
<item name="actionButtonStyle">@style/Widget.Sherlock.ActionButton</item>
<item name="actionOverflowButtonStyle">@style/Widget.Sherlock.ActionButton.Overflow</item>
<item name="actionModeBackground">@drawable/abs__cab_background_top_holo_dark</item>
<item name="actionModeSplitBackground">@drawable/abs__cab_background_bottom_holo_dark</item>
<item name="actionModeCloseDrawable">@drawable/abs__ic_cab_done_holo_dark</item>
<item name="actionBarTabStyle">@style/Widget.Sherlock.ActionBar.TabView</item>
...
// Here is what you wanted
<item name="actionBarItemBackground">@drawable/abs__item_background_holo_dark</item>
...
当你找到想要自定义的项目(在你的情况下是actionBarItemBackground
),你需要在你的项目内创建一个名为themes.xml
的文件,并添加以下内容:
<style name="Custom.Theme.Sherlock" parent="@style/Theme.Sherlock">
<item name="actionBarItemBackground">@drawable/my__item_background_holo_dark</item>
</style>
这将覆盖默认的Theme.Sherlock
主题,设置自定义的actionBarItemBackground
。
现在,您应该在活动中使用setTheme(R.style.Custom_Theme_Sherlock)
而不是使用Theme.Sherlock
。您可能还想覆盖另外两个主题 (Theme.Sherlock.Light
和Theme.Sherlock.Light.DarkActionBar
)。
还有一个提示,这是ActionBarSherlock
用于默认操作项背景(在holo_light下)的可绘制选择器,它使用9-patch png可绘制对象:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_disabled_holo_light" />
<item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/abs__list_selector_disabled_holo_light" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_background_transition_holo_light" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_background_transition_holo_light" />
<item android:state_focused="true" android:drawable="@drawable/abs__list_focused_holo" />
<item android:drawable="@android:color/transparent" />
如果你想进行其他基本的自定义操作,你可以使用这个工具,它会为你生成样式。