【问题标题】:Different drawables for split actionbar用于拆分操作栏的不同可绘制对象
【发布时间】:2014-06-01 20:25:08
【问题描述】:

如果菜单项被推送到拆分操作栏,有没有办法提供不同的可绘制图标?我的拆分操作栏颜色与顶部栏有很大不同,并且单个图标样式在视觉上并不像我希望的那样令人愉悦。

【问题讨论】:

  • 明确地说,您有兴趣更改 MenuItems 的图标,但前提是它们被放置在拆分的 ActionBar 中?
  • 是的,有两组可绘制对象,一组用于顶部操作栏,一组用于底部。

标签: android android-actionbar


【解决方案1】:

将要用于拆分的Drawables 放入/res/drawable/,将其他放入/res/drawable-w480dp

【讨论】:

    【解决方案2】:

    您可以使用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 类实现的。

    【讨论】:

    • 这不是必需的。看我的回答。
    【解决方案3】:

    在 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>
    

    然后,在菜单配置中,您应该将此引用用作可绘制图标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多