【发布时间】:2014-06-01 20:25:08
【问题描述】:
如果菜单项被推送到拆分操作栏,有没有办法提供不同的可绘制图标?我的拆分操作栏颜色与顶部栏有很大不同,并且单个图标样式在视觉上并不像我希望的那样令人愉悦。
【问题讨论】:
-
明确地说,您有兴趣更改
MenuItems的图标,但前提是它们被放置在拆分的 ActionBar 中? -
是的,有两组可绘制对象,一组用于顶部操作栏,一组用于底部。
如果菜单项被推送到拆分操作栏,有没有办法提供不同的可绘制图标?我的拆分操作栏颜色与顶部栏有很大不同,并且单个图标样式在视觉上并不像我希望的那样令人愉悦。
【问题讨论】:
MenuItems 的图标,但前提是它们被放置在拆分的 ActionBar 中?
将要用于拆分的Drawables 放入/res/drawable/,将其他放入/res/drawable-w480dp。
【讨论】:
您可以使用LevelListDrawable作为图标并设置屏幕配置更改时的级别(这意味着Activity.onCreate()被调用。
创建一个可在图标中使用的可绘制对象
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:maxLevel="0" android:drawable="@drawable/**your bitmap dark**" />
<item android:maxLevel="1" android:drawable="@drawable/**your bitmap light**" />
</level-list>
检测 ActionBar 是否被拆分。这部分似乎很棘手。我正在使用 SherlockActionBar 并且它可以工作(直到今天的 Android 版本)this way
要更改一个可绘制对象,请在对应的ActionBar.Tab 级别上设置getIcon().setLevel()。请注意,您不需要转换为 LevelListDrawable。无论出于何种原因,级别概念都是直接使用Drawable 类实现的。
【讨论】:
在 appcompat 库中,拆分 ActionBar 用于除大型、陆地或 sw480dp 之外的配置。如果您使用的是本机 ActionBar,我想您可以跳过大型配置。
然后,要提供替代可绘制对象,您应该在这些值目录中定义适当的引用,例如:
在values:
<item name="action_search_drawable" type="drawable" format="reference">@drawable/ic_action_search_narrow</item>
在values-w480dp:
<item name="action_search_drawable" type="drawable" format="reference">@drawable/ic_action_search</item>
然后,在菜单配置中,您应该将此引用用作可绘制图标。
【讨论】: