ActionBar的问题

时间:2014-01-15 12:25:05

标签: android android-actionbar

我在使用Action Bar Activity的V7支持版本时遇到两个问题。

这就是我的应用程序的样子:

enter image description here

这就是我想要的样子:

enter image description here

第一个问题是除了标题之外的文字显示为黑色而不是灰色。

我正在使用Display Home As Up Enabled选项,但你看不到箭头,因为它在黑色背景上是黑色的,如上图所示(如果你看起来很难,箭头就在那里!)

这是我用于动作栏的风格 - 我很确定我在这里做错了什么,但我无法弄明白:

<style name="PropertyCrossTheme" parent="@style/Theme.AppCompat.Light">
    <!-- Any customizations for your app running on pre-3.0 devices here -->
    <item name="android:actionBarStyle">@style/ActionBar</item>
    <item name="android:actionMenuTextAppearance">@style/ActionBar.MenuTextStyle</item>
</style>
<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@drawable/actionbar_background</item>
    <item name="android:titleTextStyle">@style/ActionBar.TitleText</item>
</style>
<style name="ActionBar.TitleText" parent="@android:style/TextAppearance">
    <item name="android:textColor">@android:color/white</item>
</style>    
<style name="ActionBar.MenuTextStyle" parent="android:style/TextAppearance">
    <item name="android:textColor">@android:color/white</item>
</style>

第二个问题是我添加到收藏夹/从收藏夹中删除选项总是被推入隐藏菜单。

这是我的菜单xml:

<item android:id="@+id/favourites_add_item" android:title="@string/favourites_add"
    android:icon="@drawable/nostar" android:showAsAction="always|withText" />
<item android:id="@+id/favourites_remove_item" android:title="@string/favourites_remove"
    android:icon="@drawable/star" android:showAsAction="always|withText" />

在代码中我添加了这样的菜单(我知道它是c# - 我正在使用Xamarin,但我认为这不是问题的原因,所以请假装它是java :-D):

    public override bool OnCreateOptionsMenu(IMenu menu)
    {
        MenuInflater.Inflate(Resource.Menu.favourites_toggle, menu);
        return true;
    }
    public override bool OnPrepareOptionsMenu(IMenu menu)
    {
        IMenuItem addItem = menu.FindItem(Resource.Id.favourites_add_item);

        addItem.SetVisible(!IsFavourited);

        IMenuItem removeItem = menu.FindItem(Resource.Id.favourites_remove_item);
        removeItem.SetVisible(IsFavourited);
        return true;
    }

由于

罗斯

2 个答案:

答案 0 :(得分:2)

在菜单xml中,尝试删除“| withText”,如下所示:

<item android:id="@+id/favourites_add_item" android:title="@string/favourites_add"
android:icon="@drawable/nostar" android:showAsAction="always" />
<item android:id="@+id/favourites_remove_item" android:title="@string/favourites_remove"
android:icon="@drawable/star" android:showAsAction="always" />

答案 1 :(得分:1)

您正在使用支持v7,因此您需要使用:

app:showAsAction="always|withText"

而不是

android:showAsAction="always|withText"

app应该是:

xmlns:app="http://schemas.android.com/apk/res-auto"

请注意,使用withText时,您强制它显示与菜单项关联的文字,如果您只想显示该星标,则可能不希望这样做。