2011-05-11 10 views
9

He creado un spinner, desde donde un usuario puede seleccionar un valor. Me puede cambiar el color de texto de la propia ruleta como se muestra en esta imagen:¿Cómo cambio el color de la fuente de la lista de selección en una ruleta?

enter image description here

Desafortunadamente cuando pulso el spinner una lista de elementos, para ser seleccionado, se muestra, pero estos tienen una fuente de color blanco sobre fondo blanco, y simplemente no he podido cambiar esto: enter image description here

He buscado el problema en Google y otros han experimentado el mismo problema. Ninguna de las correcciones sugeridas funcionó para mí. Por lo que tengo entendido, tengo que hacer una lista personalizada de algún tipo, pero bueno ... No puedo hacer que funcione. ¿Alguna sugerencia?

Mi código es el siguiente (array_spinner es una matriz de cadenas):

ArrayAdapter adapter = new ArrayAdapter(this, R.layout.row, array_spinner); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

Y mi row.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/spinnerText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:textColor="#000000" 
    android:textSize="14dp" /> 

Respuesta

16

probar este (no probado). Estoy básicamente reproducir simple_spinner_dropdown_item.xml pero con un color de texto negro:

  • Reemplazar la línea
ArrayAdapter adapter = new ArrayAdapter(this, R.layout.row, array_spinner); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

con

ArrayAdapter adapter = new ArrayAdapter(this, R.layout.row, array_spinner); 
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 
  • Añadir este archivo en 012., llamado spinner_dropdown_item.xml:
<CheckedTextView 
    android:id="@android:id/text1" 
    style="?android:attr/spinnerDropDownItemStyle" 
    android:singleLine="true" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:textColor="#FF000000" 
/> 
+0

¡Muchas gracias! ¡Funciona perfectamente bien! Gracias por la respuesta muy útil y rápida :) – Casper

6

simple y nítido

private OnItemSelectedListener your_spinner _name = new AdapterView.OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, 
           long id) { 
     ((TextView) parent.getChildAt(0)).setTextColor(Color.BLUE); 
    } 

    public void onNothingSelected(AdapterView<?> parent) { 
    } 
}; 
3

que estaba teniendo este mismo problema. Mi respuesta no es la más adecuada, pero es una solución muy rápida para quienes usan un tema de aplicación básico.

Si va a crear el ArrayAdapter para la ruleta usando

createfromResource() 

NO utilice getApplicationContext(). Declara Myclass.this en su lugar. Mi texto ahora sigue siendo el mismo que el tema de la aplicación básica. Espero que esto ayude a alguien más.

+0

Mismo problema aquí, TY – lucasjmatias

Cuestiones relacionadas