android - 如何使用 XML 而不是 Java 更改所选微调器项目的颜色?

标签 android android-support-library android-spinner

我有一个 Android Spinner,下拉菜单颜色都可以正常工作,但我无法使用 XML(而非 Java)更改所选项目的文本颜色。我已经尝试了我能想到的一切。下面是我的代码:

 <android.support.v7.widget.AppCompatSpinner
        android:layout_width="368dp"
        android:layout_height="wrap_content"
        android:entries="@array/test"
        style="@style/dropdown_text"
        tools:layout_editor_absoluteY="0dp"
        tools:layout_editor_absoluteX="8dp"></android.support.v7.widget.AppCompatSpinner>

以下是我尝试过的所有样式:

<style name="dropdown_text">
    <item name="android:background">#000000</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:textColorPrimary">#ffffff</item>
    <item name="android:textColorSecondary">#ffffff</item>
    <item name="android:textAppearance">@style/white_text</item>
</style>

<style name="white_text">
    <item name="android:textColor">#ffffff</item>
</style>

背景颜色效果很好,但文本颜色不行。

那么如何更改选中项的文本颜色呢?

谢谢。

编辑:我知道有很多帖子都在问同样的事情,他们中的大多数人都说用 Java 代码来做,但我想用 XML 来做。还有一些展示了你必须改变的风格,但我已经尝试了他们所有的建议,但没有任何效果。

最佳答案

当您使用 entries 填充您的 Spinner 时,AppCompatSpinner will create an ArrayAdapter并使用 android.R.layout.simple_spinner_item作为您的“选定” View 。 simple_spinner_item 是一个使用 spinnerItemStyle 样式的 TextView

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:textAlignment="inherit"/>

因此,如果您想更改 simple_spinner_item 中的文本颜色,您需要为 spinnerItemStyle 提供您自己的样式。像这样的东西:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:spinnerItemStyle">@style/YourSpinnerItemStyle</item>
</style>

<style name="YourSpinnerItemStyle" parent="Widget.AppCompat.TextView.SpinnerItem">
    <item name="android:textColor">@android:color/white</item>
</style>

您也可以使用 textAppearance 代替 textColor

结果:

关于android - 如何使用 XML 而不是 Java 更改所选微调器项目的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45682798/

相关文章:

java - Android 中的微调器

android - 如何在Android中将字体粗细设置为轻巧、常规

java - Android 6.0(棉花糖): How to play midi notes?

android - 如何恢复 BottomNavigationView 状态?

android - 如何对齐 Spinner Android 中第一行可见的文本

java - 在微调器中选择项目后如何获取微调器值

android - Android 上的 OpenGL 调整大小/拉伸(stretch)

android - 如何在 Flutter 中打印 String 函数的结果?

android - 在android项目中使用ActionBarSherlock时没有这样的字段错误

android - SDK 构建工具更新到 23.1 rc1 后出现意外顶级异常