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

时间:2016-06-27 19:35:56

标签: android spinner toolbar android-appcompat

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

以下是我所说的,请注意" Pils"最顶端是黑色。 Pre API 24这是白色的。 (此外,在不在API 24上的设备上运行此APP,文本显示为白色。)

enter image description here

这是我的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" />

但现在文字根本没有出现

3 个答案:

答案 0 :(得分:8)

a)无论你做什么,都不要使用应用程序上下文来夸大视图。如果您正在使用SimpleCursorAdapter,它会使用构造函数中的上下文在内部对视图进行充气。

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

而不是getActivity().getApplicationContext()getSupportActionBar().getThemedContext()的意思,它只会起作用。这是正确的方法,它不会硬编码文本颜色。

答案 1 :(得分:1)

创建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);

答案 2 :(得分:-1)

我得到了这样的工作:

创建一个新的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>