【问题标题】:Styling action item background ActionBarSherlock样式化操作项背景 ActionBarSherlock
【发布时间】:2013-01-30 13:15:24
【问题描述】:

我一直在尝试创建自己的行动项目,但这对我来说是不可能的。

我正在尝试做的是创建自定义操作项布局(例如彩色背景),例如“拇指”操作栏。我只想更改我的一项活动的操作项。

我一直在为操作菜单项使用 android:icon 和 android:actionLayout 属性。但我什么也没得到。

实际上,我在 StackOverflow 中看到了另一个线程,但对我没有帮助...

Building ActionMode with custom layout in ActionBarSherlock

styling ActionbarSherlock: textColor of the action-items

有什么想法吗?提前致谢!

【问题讨论】:

  • 您可以自定义如图所示的操作栏吗?
  • 这是一个旧项目,我最终无法尝试。如果你能试一试就好了!我认为下面的答案是正确的,但我还没有测试过:)对不起,祝你好运!
  • 该答案将改变所有操作项的背景。我通过对菜单项使用 actionLayout 来实现它。

标签: android android-actionbar actionbarsherlock


【解决方案1】:

要覆盖ActionBarSherlock 主题,您应该这样进行:

ActionBarSherlock 库项目中打开values/abs__themes.xml。你看例如:

<style name="Theme.Sherlock" parent="Sherlock.__Theme">
    <!-- Action bar styles (from Theme.Holo) -->
    <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.LightTheme.Sherlock.Light.DarkActionBar

还有一个提示,这里是ActionBarSherlock 用于默认操作项背景(在 holo_light 中)的可绘制选择器,它使用 9-patch png 可绘制对象:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<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" />


对于其他基本的定制,你可以使用这个tool,它会为你生成样式。

【讨论】:

  • +1 @Michel-F。 Portzert 是否也可以在操作项周围设置边框?如果可以,怎么做?与您显示的步骤相同?
  • 我没有太多时间去搜索,所以我建议在“drawable/”文件夹中创建一个特殊的背景 xml 文件。如果您只需要彩色背景,则包含带有 属性的 ,或者如果您需要背景图像顶部的边框,则包含 ,例如:
猜你喜欢
  • 2013-05-04
  • 1970-01-01
  • 2022-10-05
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多