Estoy tratando de cambiar el color del texto del único elemento que se muestra en la ruleta botón después de seleccionar un elemento de la lista desplegable. He estado hojeando la themes.xml y styles.xml en el SDK de Android por una hora, y me parece que no puede encontrar donde el Girador es obtener el valor del color.

Para aclarar, NO estoy tratando de cambiar el color de un elemento desplegable, estoy tratando de cambiar el color de la rueda del texto que se visualiza cuando no hay ningún menú desplegable. Supongo que se podría llamar el spinner ‘botón’ de texto.

  • hay un color de fondo y el texto en un control de giro. se puede establecer en SpinnerAdapter.getView().

8 Comentarios

  1. 106

    Creo que es, probablemente, este bit en 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>

    -= EDITAR =-
    Aquí está el resultado:
    Android: ¿Dónde está el control de giro del widget de texto atributo de color de ocultar?

    y he aquí cómo se hace:

    <?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>

    A continuación, sólo tiene que añadir esta a la aplicación de la etiqueta en la AndroidManifest.xml

    android:theme="@style/MooTheme"
    • Que por el número de elementos que van en la lista desplegable. La necesito para el texto de la real spinner.
    • Ese es el verdadero spinner. Estoy editando mi respuesta con la implementación completa.
    • No entiendo, porque este dice que es para el control de giro de los elementos. ¿Cómo se aplica esto a la ruleta? Veo que en realidad hace el trabajo, así que me voy a marcar la suya como la respuesta, pero estoy realmente curioso cómo esto realmente funciona, porque yo estaba mirando en el número de código para ver de dónde es el texto que se muestra y estaba en una pérdida para encontrarlo.
    • me puede decir cómo hacer personalizada triángulo a la derecha de la spnner?
    • Para CaseyB: u Puede por favor ser más específicos en las instrucciones? Primero, si puedo insertar las dos primeras etiquetas de estilo en mi style.xml archivo, me pide el padre.. Segundo, la adición de las tres etiquetas de estilo indicados debajo de la imagen de arriba y, a continuación, añadir adndroid:tema=»@style/MooTheme» no tiene ningún efecto en mi spinner… Tercero, usted no ha mencionado qué tipo de adaptador que debe tener para que mi spinner…
    • es parte de los nueve revisión de fondo de la imagen para Spinner.
    • Lo anterior funciona para mí. Pero sólo cuando no me fije el «android:textColor» atributo en la aplicación del tema (MooTheme arriba). Cualquier forma de establecer el control de giro del elemento de color diferente a la de la solicitud SpinnerItem color.
    • Lo que si quiero cambiar el estilo de algunos de los hilanderos y no todos los hilanderos en la aplicación?
    • A continuación, sólo se aplica el tema a este spinner
    • Podría por favor explicar un poco más acerca de lo que cada estilo es? lo que hace que el texto en rojo?

  2. 51

    Sí CaseyB es correcta.

    He aquí cómo puedo configurar el número de colores de texto, un poco simple ejemplo:

    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>

    A continuación, en el manifiesto:

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

    El texto en el exterior de todos sus hilanderos de ahora será de color Verde y el texto en los cuadros de lista desplegables será de color rojo.

    • Thamk del tio….es perfact trabajando para mí……..
    • Para AppCompat tema de quitar android: como este <item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
  3. 28

    Lo he hecho con otra técnica simple,

    copia de la simple_spinner_item.xml y simple_spinner_dropdown_item.xml a partir de Android res/layout carpeta y copie en su proyecto.

    A continuación, modificar las siguientes líneas

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

    como:

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

    El resto es fácil, ahora puedes editar el simple_spinner_item.xml para editar la apariencia de un elemento visible en la ruleta widget, y editar el simple_spinner_dropdown_item.xml para cambiar la apariencia de la lista desplegable.

    Por ejemplo,
    mi actividad de diseño contiene:

    <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" />

    y mi simple_spinner_item.xml ahora contiene:

    <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" />

    y la simple_spinner_dropdown_item.xml se parece a:

    <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" />
    • Bonito ejemplo. Yo no podía llegar a los demás a trabajar en mi proyecto, pero esto era fácil y trabajó como un encanto.
    • Esta es también una solución que no fuerza el nuevo estilo a nivel mundial, al igual que los otros hacen.
  4. 26

    Puede utilizar setOnItemSelectedListener en Spinner objeto,

    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);
        }
    });
    • esto es más simple método aquí 🙂
    • Me parece que tengo que comprobar que los padres con hijos en primer lugar, de lo contrario no es un NullPointerException planteado siempre que puedo cambiar la orientación del dispositivo.
    • Esta puede ser la mejor solución si el color es sólo para este spinner y no a nivel mundial
    • Idealmente, si alguien quiere volver a utilizar sus Spinner Adaptador, esta es la mejor manera de hacerlo. Gracias trabajado de esa manera!
    • NPE ‘void android.widget.TextView.setTextColor(int)’
  5. 11

    es muy simple en realidad. Yo estaba buscando por todas partes usted sólo tiene que crear el estilo y el conjunto de spinner

    primero crear el tema en Style.xml

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

    a continuación, en el xml donde has establecido tu spinner añadir esto :

    android:theme=»@style/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"/>

    Disfrutar De Codificación

    • gracias chicos por votos. 🙂
    • Excelente! Yo solía @android:color/holo_orange_light
    • Esto también cambia la textcolor tanto elemento y desplegable
  6. 1

    No creo que no es un color asociado con el texto. Su más probable es que predefinidos en el código android, podría tener que hacer tu propia si desea cambiar la rueda del color.

    Esto incluiría el cambio de la ondraw() método y dibuja el spinner cómo te gustaría que se vea.

    Única cosa que creo que podría potencialmente resolver este problema es la propiedad de estilo de la ruleta.

    Fuente: http://developer.android.com/reference/android/widget/Spinner.html

    Esto podría ayudar a:

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

    • Bien, la razón por la que creo es en un estilo en algún lugar, es porque cuando yo cambio de la Holo para el Holo.La luz el tema, el color del texto en las hilanderas cambiar de blanco a negro.
    • Así se podría definir su propio estilo y, a continuación, aplicar a la ruleta, a la derecha?
    • Yo podría, pero no tengo ni idea de qué atributo para reemplazar el color del texto, de ahí mi pregunta.
  7. 0

    esto funcionó para mí
    crear su propio archivo de diseño con una definición para el control de giro del elemento.

    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" />

    Cambiar el número de elementos mediante el adaptador de

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

    Puede cambiar el color del texto reemplazando el método getView de la siguiente manera:

    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;
                  }

Dejar respuesta

Please enter your comment!
Please enter your name here