1

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

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

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

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

4

2 回答 2

2

为每个要在“drawable”目录的操作栏中显示的图标创建一个 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

你得到了带有背景的 ActionBar 图标。

于 2012-11-22T18:07:50.790 回答
1

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

/drawable-fr/
/drawable-us/

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

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

于 2012-06-08T23:25:06.353 回答