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.
- Pantalla de bloqueo de Android
- En Android, ¿cómo inserto el texto dentro de una ruta de Bezier?
- Hacer texto en negrita y cursiva
- Cómo configurar el color de texto de los elementos en Spinner Android
- RemoteViews setLayoutParams?
- Justificar texto de android dentro de un listview sin usar un WebView
- Render el texto en la aplicación puramente nativa de Android
- Android - ¿Es posible superponer texto en texto?
- Texto de fondo de Android EditText
- Abrir o iniciar el teclado del software en modo de número o símbolo
- Android cómo dividir entre dos textview el ancho completo de pantalla exactamente cincuenta por ciento cincuenta?
- ¿Cómo agregar TextView en medio de pulgar SeekBar?
- Android: Alinea un texto a la izquierda y centra la vista de texto en la vista de los padres
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:
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:
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);
- Android: No se puede instanciar la actividad / ClassNotFoundException
- Causado por: java.lang.UnsupportedOperationException: No se puede convertir a dimension: type = 0x1