更改ActionBar下拉菜单的文字颜色

4

我已经阅读了很多种在ActionBar中更改Spinner文本颜色的方法,但我真的不知道缺少了什么来实现我需要的效果。

这就是我的ActionBar Spinner:

enter image description here

enter image description here

如您所见,我的Spinner项目上有白色文本。我需要将其更改为黑色。

我的res/styles文件如下。

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">

        <!-- API 14 theme customizations can go here. -->
        <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item>
        <item name="android:dropDownItemStyle">@style/MyDropDownItemView</item>
        <!-- <item name="android:textColor">@color/white</item> -->
    </style>

    <!-- ActionBar styles -->
    <style name="MyDropDownListView" parent="@style/Widget.AppCompat.ListView.DropDown">
        <item name="android:background">@color/white</item>
    </style>

</resources>

我把背景改成白色了,但现在我需要把文字改成黑色,但我无法做到。

有人可以帮帮我吗?

2个回答

2

我认为最简单的方法是为您的下拉列表创建一个自定义的“spinner item”布局,但只需使用一个文本视图并将其颜色设置为您想要的颜色。

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:gravity="center"       
          android:textSize="14sp"
          android:textColor="#000000" />

这里有一篇文章详细说明如何通过更改xml样式来实现: Android Actionbar导航下拉菜单文本颜色

更新:

删除从appcompat库中更改某些内容的xml语句中的“android:”部分。在我的应用程序中,这个方法起了作用。所以,代替这个:

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">

        <!-- API 14 theme customizations can go here. -->
        <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item>
        <item name="android:dropDownItemStyle">@style/MyDropDownItemView</item>
        <!-- <item name="android:textColor">@color/white</item> -->
    </style>

您需要删除“android:”部分:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">

        <!-- API 14 theme customizations can go here. -->
        <item name="dropDownListViewStyle">@style/MyDropDownListView</item>
        <item name="dropDownItemStyle">@style/MyDropDownItemView</item>
        <!-- <item name="textColor">@color/white</item> -->
    </style>

更新 2:

我将会分享一下我的appcompat应用程序的样式,希望能够让您看到我看不到的地方。我有两个文件夹:resources/values 和 resources/values-v14。

在 resources/values 文件夹中,我的 style.xml 文件如下所示:

  <style name="Theme.Jamesstyle" parent="@style/Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/Actionbar.FlatUi</item>
        <item name="actionBarTabStyle">@style/ActionBar.FlatUi.Tabs</item>
        <item name="actionBarTabTextStyle">@style/ActionBar.FlatUi.Text</item>
        <item name="homeAsUpIndicator">@android:color/transparent</item>
    </style>
    <style name="Actionbar.FlatUi" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="background">@color/bizzumi_light</item>
        <item name="backgroundStacked">@color/bizzumi_red</item>
        <item name="backgroundSplit">@color/bizzumi_red</item>
        <item name="titleTextStyle">@style/TitleColor</item>
        <item name="displayOptions">showHome|homeAsUp|showTitle</item>
    </style>
    <style name="TitleColor" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="textColor">#000099</item>
    </style>

在我的资源/values-v14/style.xml文件中,我有:

<style name="Theme.Jamesstyle" parent="@style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/Actionbar.FlatUi</item>
        <item name="android:actionBarTabStyle">@style/ActionBar.FlatUi.Tabs</item>
        <item name="android:homeAsUpIndicator">@android:color/transparent</item>
        <item name="android:actionBarTabTextStyle">@style/ActionBar.FlatUi.Text</item>
    </style>
    <style name="Actionbar.FlatUi" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@color/bizzumi_light</item>
        <item name="android:backgroundStacked">@color/bizzumi_light</item>
        <item name="android:backgroundSplit">@color/bizzumi_light</item>
        <item name="android:titleTextStyle">@style/TitleColor</item>i
         <item name="android:displayOptions">showHome|homeAsUp|showTitle</item><item name="displayOptions">showHome|homeAsUp|showTitle</item></style>
    <style name="TitleColor" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">#000099</item>
    </style>

也许可以尝试使用这种文件夹结构并创建两个不同的styles.xml文件。否则我就一无所知了。祝你好运!

我尝试了链接中的内容,但没有成功。 - Pedro Romão
抱歉伙计,我再试一次,但这是我能给出的最后建议,请检查我的答案。 - Chris
我还没有测试过。我有其他事情要做。但是你试图帮助我,所以... - Pedro Romão
谢谢!我只是好奇 :) 如果你测试过,请告诉我! - Chris
什么都不起作用。我还尝试了使用SpinnerAdapter,但我仍然无法为Spinner设置颜色,并为项目设置其他颜色。 - Pedro Romão
显示剩余2条评论

0
`<resources xmlns:android="http://schemas.android.com/apk/res/android">

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">

    <!-- API 14 theme customizations can go here. -->
    <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item>
    <item name="android:dropDownItemStyle">@style/MyDropDownItemView</item>
    <!-- <item name="android:textColor">@color/white</item> -->
</style>

<!-- ActionBar styles -->
<style name="MyDropDownListView" parent="@style/Widget.AppCompat.ListView.DropDown">
    <item name="android:background">@color/white</item>
    <item name="android:textColor">#000000</item>
</style>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接