Можно изменить цвет текста, переопределив метод getView следующим образом:

аюсь изменить цвет текста отдельного элемента, который отображается на кнопке счетчика после выбора элемента из раскрывающегося списка. Я уже час читаю themes.xml и styles.xml в Android SDK, и я не могу найти, откуда Spinner получает значение цвета.

Чтобы уточнить, я НЕ пытаюсь изменить цвет выпадающего элемента, я пытаюсь изменить цвет отображаемого текста счетчика, когда нет выпадающего. Я думаю, вы могли бы назвать это «кнопка» текст счетчика.

 Ray Tayek03 мар. 2012 г., 01:47
в блесне есть цвет и фон для текста. Вы можете установить его в SpinnerAdapter.getView ().

Ответы на вопрос(8)

что есть цвет, связанный с текстом. Скорее всего, это предопределено в коде Android, возможно, придется просто сделать свой собственный, если вы хотите изменить цвет счетчика.

Это будет включать в себя изменение метода ondraw (), и вы нарисуете спиннер так, как вы хотите, чтобы он выглядел.

Единственное, что я думаю, могпотенциально решить эта проблема является свойством стиля счетчика.

Источник:http://developer.android.com/reference/android/widget/Spinner.html

Это может помочь:

http://www.designerandroid.com/?p=28

 Christopher Perry28 мая 2011 г., 03:36
Ну, причина, по которой я думаю, что это где-то в стиле, заключается в том, что когда я переключаюсь с темы Holo на тему Holo.Light, цвет текста на счетчиках меняется с белого на черный.
 JoxTraex28 мая 2011 г., 03:38
Ну, вы могли бы определить свой собственный стиль и затем применить его к спиннеру, верно?
 Christopher Perry28 мая 2011 г., 03:49
Я мог бы, но я понятия не имею, какой атрибут переопределить для цвета текста, отсюда и мой вопрос.

скопируйте simple_spinner_item.xml и simple_spinner_dropdown_item.xml из папки Android res / layout и скопируйте их в свой проект.

Затем измените следующие строки

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, Android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
spinnerSubject.setAdapter(adapter);

как:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, R.layout.simple_spinner_item);
adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
spinnerSubject.setAdapter(adapter);

Остальное легко, теперь вы можете отредактировать файл simple_spinner_item.xml, чтобы отредактировать внешний вид одного видимого элемента в виджете счетчика, и отредактировать файл simple_spinner_dropdown_item.xml, чтобы изменить внешний вид выпадающего списка.

Например, мой макет активности содержит:

<Spinner
android:id="@+id/mo_spinnerSubject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@drawable/spinnerset_background" />

и мой simple_spinner_item.xml теперь содержит:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="@color/custom_white"
android:textSize="16sp" />

и simple_spinner_dropdown_item.xml выглядит так:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="@color/custom_black"
android:ellipsize="marquee"
android:singleLine="true"
android:textColor="@color/custom_white" />
 raider3329 окт. 2013 г., 03:11
Хороший пример. Я не мог заставить других работать в моем проекте, но это было легко и сработало как шарм.
 Gerhard Burger02 февр. 2015 г., 13:02
Это также решение, которое не навязывает новый стиль глобально, как другие.

м определением для элемента счетчика.

custom_spinner.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/txt_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#ffffff" />

Измените элемент счетчика с помощью адаптера

Spinner spinner= (Spinner) findViewById(R.id.spinner1);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.by_loc_array,R.layout.txt_spinner);
spinner.setAdapter(adapter);

нужно просто создать стиль и установить на спиннер

сначала создайте свою тему вStyle.xml

 <style name="spinnerTheme" parent="android:Theme">
    <item name="android:textColor">@color/gray_dark</item>
</style>

тогда в вашем XML, где вы установили свой счетчик, добавьте это:

Android: тема = "@ стиль / spinnerTheme"

                       <Spinner
                        android:id="@+id/spinner"
                        android:layout_width="match_parent"
                        android:layout_height="50dp"
                        android:padding="10dp"
                        android:paddingBottom="5dp"
                        android:paddingLeft="10dp"
                        android:layout_span="3"
                        android:layout_weight="1.3"
                        android:theme="@style/spinnerTheme"
                        android:textSize="12sp"
                        android:spinnerMode="dialog"
                        android:clickable="false"/>

Наслаждайтесь кодированием

 pollaris27 янв. 2018 г., 01:24
Отлично! Я использовал @android: color / holo_orange_light
 Pre_hacker06 нояб. 2017 г., 13:59
Спасибо, ребята, за голоса. :)
 ymerdrengene08 апр. 2018 г., 18:24
Это также меняет цвет текста для элемента и раскрывающегося списка

Вот как я устанавливаю цвет текста блесны, небольшой простой пример:

styles.xml

    <style name="Theme.NoTitleBar.WithColoredSpinners" parent="@android:style/Theme.NoTitleBar">
        <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
        <item name="android:spinnerDropDownItemStyle">@style/SpinnerItem.DropDownItem</item>
    </style>

    <style name="SpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem">
        <item name="android:textColor">#00FF00</item>
    </style>

    <style name="SpinnerItem.DropDownItem" parent="@android:style/Widget.DropDownItem.Spinner">
        <item name="android:textColor">#FF0000</item>
    </style>

</resources>

Тогда в вашем манифесте:

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.NoTitleBar.WithColoredSpinners" >

Текст на внешней стороне всех ваших блесен теперь будет зеленым, а текст в выпадающих списках - красным.

 Kalpesh19 апр. 2012 г., 07:52
Чувак Тамка .... это идеальное решение для меня ........
 Roman_D28 сент. 2016 г., 09:03
Для темы AppCompat просто удалитеandroid: нравится<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Решение Вопроса

Я думаю, что это, вероятно, это немного в styles.xml

<style name="Widget.TextView.SpinnerItem">
    <item name="android:textAppearance">@style/TextAppearance.Widget.TextView.SpinnerItem</item>
</style>
<style name="Widget.DropDownItem.Spinner">
    <item name="android:checkMark">?android:attr/listChoiceIndicatorSingle</item>
</style>

- = РЕДАКТИРОВАТЬ = - Вот результат:

и вот как это делается:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MooTheme" parent="android:Theme">
        <item name="android:spinnerItemStyle">@style/MooSpinnerItem</item>
    </style>

    <style name="MooSpinnerItem" parent="android:Widget.TextView.SpinnerItem">
        <item name="android:textAppearance">@style/MooTextAppearanceSpinnerItem</item>
    </style>

    <style name="MooTextAppearanceSpinnerItem" parent="android:TextAppearance.Widget.TextView.SpinnerItem">
        <item name="android:textColor">#F00</item>
    </style>
</resources>

Затем просто добавьте это в тег приложения в вашем AndroidManifest.xml

android:theme="@style/MooTheme"
 Christopher Perry28 мая 2011 г., 04:06
Это для вращающихся предметов, которые идут в выпадающем списке. Мне это нужно для текста в реальном счетчике.
 CaseyB28 мая 2011 г., 04:23
Это фактический счетчик. Я редактирую свой ответ с полной реализацией.
 Christopher Perry08 дек. 2011 г., 17:21
@pengwang это часть девяти патчей, которые можно нарисовать для Spinner.
 Christopher Perry28 мая 2011 г., 04:30
Я не понимаю, потому что это говорит, что это для вращающихся предметов. Как это применимо к счетчику? Я вижу, что это действительно работает, поэтому я собираюсь отметить ваш ответ, но мне действительно любопытно, как это на самом деле работает, потому что я искал в коде Spinner, чтобы увидеть, где отображается текст и был в потеря, чтобы найти это.
 pengwang30 мая 2011 г., 07:57
Можете ли вы сказать мне, как сделать пользовательский треугольник справа от spnner?

spinnerObject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        ((TextView)parentView.getChildAt(0)).setTextColor(Color.rgb(249, 249, 249));
        // OR ((TextView)parentView.getChildAt(0)).setTextColor(Color.RED);
    }
});
 David Kibblewhite13 авг. 2014 г., 10:34
Я считаю, что сначала я должен проверить, что у родителя есть дети, в противном случае при каждом изменении ориентации устройства возникает исключение NullPointerException.
 bkurzius02 мар. 2015 г., 23:06
Это может быть лучшим решением, если цвет установлен только для этого одного счетчика, а не глобально
 vlasentiy26 июл. 2017 г., 10:19
NPE 'void android.widget.TextView.setTextColor (int)'
 Vasil Valchev07 мар. 2013 г., 03:24
это самый простой способ здесь :)
 sud00715 июн. 2017 г., 14:32
В идеале, если кто-то хочет повторно использовать адаптер Spinner, это лучший способ. Спасибо, сработало именно так!

переопределив метод getView следующим образом:

new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, list()){
                @Override
                public View getView(int position, View convertView, @NonNull ViewGroup parent) {
                    View view = super.getView(position, convertView, parent);
                    //change the color to which ever you want                    
                    ((CheckedTextView) view).setTextColor(Color.RED);
                    return view;
              }

Ваш ответ на вопрос