Android: ¿Dónde está escondido el atributo de color del texto del widget Spinner?

Estoy intentando cambiar el color del texto del solo artículo que se exhibe en el botón del hilandero después de que usted seleccione un artículo del menú desplegable. He estado examinando los temas.xml y styles.xml en el SDK de Android durante una hora, y no puedo encontrar dónde el Spinner está recibiendo el valor del color.

Para aclarar, no estoy tratando de cambiar el color de un elemento desplegable, estoy tratando de cambiar el color del texto mostrado por el hilandero cuando no hay ningún menú desplegable. Supongo que podrías llamarlo el texto del "botón" del hilandero.

Creo que es probablemente este poco 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> 

– = EDIT = – Aquí está el resultado: Introduzca aquí la descripción de la imagen

Y aquí está 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 tienes que añadir esto a la etiqueta de la aplicación en su AndroidManifest.xml

 android:theme="@style/MooTheme" 

Sí, CaseyB está bien.

Aquí es cómo fijé el color de texto del hilandero, un pequeño ejemplo simple:

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> 

Entonces en su 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 ahora será verde y el texto en los desplegables será rojo.

Hice esto usando otra técnica simple,

Copie los archivos simple_spinner_item.xml y simple_spinner_dropdown_item.xml de la carpeta Res / layout de Android y cópielos en su proyecto.

A continuación, modifique 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 puede editar el archivo simple_spinner_item.xml para editar la apariencia de un elemento visible en el widget de spinner y editar el archivo simple_spinner_dropdown_item.xml para cambiar el aspecto de la lista desplegable.

Por ejemplo, el diseño de mi actividad 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 el simple_spinner_dropdown_item.xml se ve así:

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

Puede utilizar setOnItemSelectedListener en el objeto Spinner,

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

Es muy simple en realidad. Yo estaba buscando todo lo que sólo necesita para crear el estilo y el conjunto está en la ruleta

Primero crea tu tema en Style.xml

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

Entonces en su xml donde usted ha fijado su hilandero agregue esto:

Android: theme = "@ estilo / 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"/> 

Disfruta de la codificación

No creo que haya un color asociado con el texto. Es más probable que predefinidos en el código de Android, podría tener que hacer su propia si desea cambiar el color del hilandero.

Esto incluiría cambiar el método ondraw () y dibujar el spinner como le gustaría que mirara.

Lo único 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 puede ayudar:

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

Esto funcionó para mí crear su propio archivo de diseño con una definición personalizada para el elemento spinner.

 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 elemento giratorio mediante adaptador

 Spinner spinner= (Spinner) findViewById(R.id.spinner1); ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.by_loc_array,R.layout.txt_spinner); spinner.setAdapter(adapter); 
  • Centrar texto en un brindis en Android
  • Android - El botón de radio no muestra su texto
  • Centrar una vista de texto vertical en un EditText
  • Cómo leer un archivo de texto seleccionado de sdcard en android
  • android xml El atributo de texto Textview no puede tomar '<' como valor
  • Cambiar la imagen de fondo de una actividad que extiende ListActivity
  • Obtener texto de la vista (botón)
  • Representación inconsistente de SVG entre escritorio y móvil - ¿es Arial una fuente segura en SVG?
  • Cómo evitar que EditText rompa una línea después de la puntuación
  • ¿Cómo subraya un texto en android xml?
  • ¿Cómo dibujar texto en cursiva en el lienzo de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.