Android在Spinner中更改文本颜色

时间:2016-04-15 12:27:24

标签: android colors styles themes spinner

我有一个Spinner并使用ArrayAdapter。在适配器中,我使用" android.R.layout.simple_list_item_1",像这样:

spinnerControlObjectType.setAdapter(new ArrayAdapter(getApplicationContext, android.R.layout.simple_list_item_1, list))

我查看了android.R.layout.simple_list_item_1并看到它有这样的文字样式:

android:textAppearance="?android:attr/textAppearanceListItemSmall"

我想覆盖" textAppearanceListItemSmall"在我的主题中,为了给它一个不同的颜色,我该怎么做?我不想继承任何东西或编写代码样板。我确信有一种方法可以改变颜色,只更改theme.xml。

在android文档中写道:' ...引用样式属性实质上是说,"在当前主题中使用由此属性定义的样式。" .. 。' (http://developer.android.com/guide/topics/resources/accessing-resources.html#ReferencesToThemeAttributes)。他们说"定义"和#34;在当前主题" - 如何在当前主题中定义它?让我疯了......

5 个答案:

答案 0 :(得分:6)

为您的微调器项目制作自定义XML文件

<强> spinner_layout.xml

添加自定义颜色

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/custom_spinner"
    android:textSize="16sp"
    android:text="HELLO"
    android:padding="10dp"
    android:textColor="@color/colorAccent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

使用此文件显示您的微调器项目

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.spinner_layout,ar);
        mSpinner.setAdapter(adapter);

答案 1 :(得分:5)

您应该在主题中覆盖该属性,在此示例中我使用AppCompat主题作为父级,但您可以将其更改为任何其他主题。根据您的需要,您应该为不同版本的Android制作主题和样式资源:

<style name="MyTheme" parent="Theme.AppCompat.Light">
    <item name="android:textAppearanceListItemSmall">@style/MySpinnerStyle</item>
</style>

<style name="MySpinnerStyle" parent="TextAppearance.AppCompat.Subhead">
    <item name="android:textSize">13sp</item>
    <item name="android:textColor">@color/white</item>
</style>

答案 2 :(得分:1)

我回答我自己的问题 - 所有的工作都像文件说的那样。我的问题是我想在Spinner组件中使用“android.R.layout.simple_list_item_1”。我一使用“android.R.layout.simple_spinner_item”就行了。

答案 3 :(得分:0)

试试这个,

        // Initializing an ArrayAdapter
        final ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
                this,R.layout.spinner_item,plantsList){
            @Override
            public View getDropDownView(int position, View convertView,
                                        ViewGroup parent) {
                View view = super.getDropDownView(position, convertView, parent);
                TextView tv = (TextView) view;

                    // Set the Text color
                    tv.setTextColor(Color.parseColor("#FFC9A3FF"));

                return view;
            }
        };
        spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_item);
        spinner.setAdapter(spinnerArrayAdapter);

答案 4 :(得分:0)

更改文字颜色。

 ((TextView) parent.getChildAt(0)).setTextColor(Color.BLACK);