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

时间:2017-08-14 20:47:16

标签: 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上做。还有一些展示了你必须改变的风格,但我已经尝试了他们所有的建议,但没有任何效果。

3 个答案:

答案 0 :(得分:2)

当您使用SpinnerAppCompatSpinner will create an ArrayAdapter填充entries并使用android.R.layout.simple_spinner_item作为您选择的&#34;&#34;视图。 simple_spinner_itemTextView使用spinnerItemStyle设置的样式。

<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

结果:

答案 1 :(得分:0)

<item android:state_activated="true" 
android:drawable="@color/red"/>

尝试此操作为所选项目设置颜色

答案 2 :(得分:-1)

您可以使用此代码

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            TextView selectedText = (TextView)adapterView.getChildAt(0); 
            if (selectedText != null) {
                selectedText.setTextColor(Color.WHITE);

            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });