2010-12-05 51 views
22

Tengo un problema con los teléfonos Droid X donde los usuarios dicen que el color de la fuente resulta ser blanco en la ruleta, por lo que es invisible a menos que los usuarios resalten los elementos. Ningún otro teléfono parece tener este problema. Iba a tratar de forzar que la fuente sea negra para ver si eso ayuda. ¿Cómo puedo hacer eso?¿Cómo cambiar el color de fuente de Spinner?

Así es como estoy ocupando el spinner. Parece que el simple_spinner_item está roto en Droid X's.

String spin_arry[] = new String[str_vec.size()]; 
str_vec.copyInto(spin_arry); 
ArrayAdapter adapter = 
    new ArrayAdapter(this,android.R.layout.simple_spinner_item, spin_arry); 

Respuesta

45

Voy a utilizar el ejemplo de proyecto Spinner de Android SDK para los siguientes ejemplos de código.


Código:

En primer lugar, es necesario crear su adaptador personalizado para que intercepten la creación de puntos de vista en la lista desplegable:

static class CustomArrayAdapter<T> extends ArrayAdapter<T> 
{ 
    public CustomArrayAdapter(Context ctx, T [] objects) 
    { 
     super(ctx, android.R.layout.simple_spinner_item, objects); 
    } 

    //other constructors 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) 
    { 
     View view = super.getView(position, convertView, parent); 

     //we know that simple_spinner_item has android.R.id.text1 TextView:   

     /* if(isDroidX) {*/ 
      TextView text = (TextView)view.findViewById(android.R.id.text1); 
      text.setTextColor(Color.RED);//choose your color :)   
     /*}*/ 

     return view; 

    } 
} 

a continuación, crear el adaptador en su código como este:

String [] spin_arry = getResources().getStringArray(R.array.Planets);   
this.mAdapter = new CustomArrayAdapter<CharSequence>(this, spin_arry); 

Explicación:

Debido CustomArrayAdapter sabe que el uso de recursos de diseño integrado del androide, sino que también sabe que el texto se colocará en TextView con id android.R.id.text1. Es por eso que puede interceptar la creación de vistas en la lista desplegable y cambiar el color del texto a cualquier color que se necesite.


Captura de pantalla:

enter image description here

+0

mejor solución, modificar este código: http://stackoverflow.com/questions/10409871/how-to-increase-spinner-item-font-size – Gerry

-1

hacer su propio archivo de diseño xml, y dar un androide: textColor = "# 000" para el texto negro

2

Para añadir a la respuesta del SASAD, haga una copia de ese archivo, que se puede encontrar en su carpeta de Android, en su proyecto, cambie el color de texto de la Vista de texto en ese archivo, y utilice ese diseño al inicializar el Adaptador en lugar de Android.

7

simple y nítido ...

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

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

Esto hace que el TextView a ser nulo cuando gira su dispositivo. – tolgap

7

escribir R.layout.simplespinneritem:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:singleLine="true" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

La ID es android:id="@android:id/text1", establezca el color de la fuente y el fondo.

ArrayAdapter adapter = 
    new ArrayAdapter(this,packagename.R.layout.simple_spinner_item, spin_arry); 
+1

¿Cómo se usa esto si los elementos del elemento giratorio se cargan desde usando el atributo de entradas? – TheRealChx101

3
public class ee extends Activity{ 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.ww); 
addListenerOnSpinnerItemSelection(); 

} 
public void addListenerOnSpinnerItemSelection(){ 

    ArrayList<String> array = new ArrayList<String>(); 
    array.add("item0"); 
    Spinner spinner1; 
    ArrayAdapter<String> mAdapter; 
    spinner1= (Spinner) findViewById(R.id.spinner2); 
    spinner1= new ArrayAdapter<String>(this, R.layout.spinner_item, array); 
    spinner1.setAdapter(mAdapter); 

} 
} 

y en res XML/diseño añadir nuevo archivo xml: tipo de diseño, hilandero

(en spinner_item.xml)

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="top" 
    android:singleLine="true" 
    android:textColor="#00f0ff" /> 
-1

Aquí es chicos forma más adecuada,

En primer lugar encontrar el archivo "simple_spinner_item.xml" en su sistema, seguir el camino de abajo, C: \ Users [nombre de usuario] \ AppData \ local \ Android \ SDK \ plataformas [android-23] \ datos de programa \ res \ layout

Ahora copia el contenido del archivo "simple_spinner_item.xml"

Segunda crean el custom_spinner.xm l Archivo de la res del proyecto \ carpeta de diseño

y pegar el contenido copiado en el archivo recién creado

Aquí está la muestra:

res \ layout \ custom_spinner.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView android:textAlignment="inherit" 
    android:ellipsize="marquee" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:singleLine="true" 
    android:textColor="@color/dark_gray" 
    style="?android:attr/spinnerItemStyle" 
    android:id="@android:id/text1" xmlns:android="http://schemas.android.com/apk/res/android"/> 

Aquí es el código del adaptador de conjunto:

Spinner ddlArea = (Spinner) findViewById(R.id.ddlArea); 

ddlArea.setAdapter(new ArrayAdapter<String>(this, R.layout.custom_spinner, areaList)); 

Donde areaList es la lista

Gracias, Ejaz Waquif

+0

Esta no es una respuesta a la pregunta –

Cuestiones relacionadas