如何为操作栏中显示的菜单项设置背景



我在操作栏中显示一个菜单项。我想为这个项目设置一个背景。我宁愿不使用图标,否则我无法使用字符串.xml进行本地化(我在这个特定的菜单项中显示一些文本,这些文本将被翻译成多种语言。

这里的大多数答案都建议使用图标。图标当然会覆盖文本,如果我尝试 android:background 而不是 android:icon,它就不会显示任何内容。

所以基本上我想用自定义图像自定义操作栏中的菜单项,但同时能够在上面写一些东西(拉一些字符串)。在 xml 中有办法做到这一点吗?

附言我正在使用Theme.Holo.Light.DarkActionBar,但我已经更改了操作栏的背景。

为每个图标创建一个 xml 文件,以显示在"可绘制"目录的操作栏中,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/menuitem_bk"/>
    <item android:drawable="@drawable/icon_one"/>      
</layer-list>

可绘制对象icon_one只是具有透明背景的图标,"menuitem_bk"将是定义如下的可绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <size
        android:height="36dp"
        android:width="36dp" />
    <solid android:color="@color/action_bar_items_bk_color" />
</shape>

您必须创建其中四个,每个可绘制目录(xhdpi,hdpi,mdpi和ldpi)中一个。形状的大小将根据目录而有所不同:

  • XHDPI -> 48x48 HDPI -> 36x36 MDPI -> 24x24 LDPI -> 18x18

(与此相符:http://developer.android.com/guide/practices/ui_guidelines/icon_design_action_bar.html)

你得到了带有背景的动作栏图标。

作为一种解决方法,您始终可以为本地化设置不同的图标。没有什么能阻止你:

/drawable-fr/
/drawable-us/

另一方面,如果您认为这与您继承的主题有关,则可以查看 DarkActionBar 的源代码,然后在样式中对其进行扩展.xml覆盖要更改的值(颜色)。

https://github.com/android/platform_frameworks_base/tree/master/core/res/res/values

最新更新