如何更改工具栏中 AppCompatSpinner 的文本颜色?

How to Change text color on AppCompatSpinner in Toolbar?

我最近更新到 API 24,现在我的工具栏内的 AppCompatSpinner 上的文本颜色出现问题。

这就是我所说的,请注意最顶部的 "Pils" 是黑色的。 Pre API 24 这是白色的。 (此外,运行 此应用程序在不在 API 24 上的设备上显示为白色。)

这是我的 build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion '24.0.0'

    defaultConfig {
        applicationId 'com.baviloworks.braumeister'
        minSdkVersion 17
        targetSdkVersion 24
        versionCode 100
        versionName '1.0.0'
    }

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:support-v4:24.0.0'
    compile 'com.android.support:design:24.0.0'
    compile 'com.android.support:cardview-v7:24.0.0'
    compile 'com.github.PhilJay:MPAndroidChart:v2.2.3'
}

这是我的 style.xml:

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="colorPrimaryDark">@color/DarkBlue</item>
        <item name="colorAccent">@color/Green</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="customTabText" parent="TextAppearance.Design.Tab">
        <item name="android:textSize">13sp</item>
    </style>
</resources>

这里是 XML 如果我的工具栏:

<android.support.v7.widget.Toolbar
            android:id="@+id/Toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/Blue"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

    <android.support.v7.widget.AppCompatSpinner
        android:id="@+id/Recipe_Selection_Spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:popupBackground="@drawable/spinner_rounded_corners"
        android:minWidth="175dp"/>
</android.support.v7.widget.Toolbar>

如果有人能指出正确的方向,那就太好了!

谢谢:)

我现在已经试过了:

cursorAdapter = new SimpleCursorAdapter(getActivity().getApplicationContext(), R.layout.custom_spinner, dbData, recipeNames, recipeTo, 0);
cursorAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
recipeLoadSelection.setAdapter(cursorAdapter);

这是自定义微调器:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"        
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#ffffff" />

但是现在文本根本不会显示

创建custom_spinner.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff" />

使用适配器设置自定义微调器文本

ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_array, R.layout.custom_spinner);
spinner.setAdapter(adapter);

我是这样工作的:

新建一个custom_spinner.xml

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

创建新的旋转器样式:

<style name="spinnerItemStyle" parent="android:Widget.TextView.SpinnerItem">
    <item name="android:textColor">@color/White</item>
</style>

a) 无论您做什么,都不要使用应用程序上下文来扩充视图。如果您使用 SimpleCursorAdapter,它会使用构造函数的上下文在内部膨胀视图。

b) 将工具栏的主题上下文用于其中的小部件。您的工具栏会覆盖 android:theme 属性。您将希望使用此上下文来扩充该工具栏中的任何视图。

意思是 getActivity().getApplicationContext() 写成 getSupportActionBar().getThemedContext() 就可以了。这是正确的方法,它不会硬编码文本颜色。