Color de texto de una ruleta cerrada

Entiendo que el spinner cerrado es en realidad una View , creo. Pero supongo que tiene un TextView allí en algún lugar para mostrar el texto. ¿Cómo consigo el acceso a ese TextView así que puedo cambiar el textcolor?

EDIT: Tengo que cambiar esta programatically sobre la marcha, no en el XML.

 TextView v = (TextView) getView(mySpinner); v.setTextColor(..... 

Esto no funciona …

¡Gracias!

  array_typ=new String[5]; array_typ[0]="Pressure"; array_typ[1]="Level"; array_typ[2]="Overage"; array_typ[3]="Under"; array_typ[4]="Taken"; adaptertyp = new ArrayAdapter<Object>(this,R.layout.simple_spinner_item, array_typ); typ.setAdapter(adaptertyp); 

Entiendo que el spinner cerrado es en realidad una vista, creo.

Sí. Específicamente, es lo que usted le dijo a su SpinnerAdapter para crear.

Pero supongo que tiene un TextView allí en algún lugar para mostrar el texto.

Eso dependerá de lo que usted le dijo a su SpinnerAdapter para crear.

¿Cómo consigo el acceso a ese TextView así que puedo cambiar el textcolor?

Idealmente, no lo haces – le das el color correcto en primer lugar, a través de lo que le SpinnerAdapter a tu SpinnerAdapter para crearlo. Si el color varía, anule getView() en su SpinnerAdapter y cambie el color en ese punto.

En un pellizco, puedes intentar llamar a getSelectedView() para que la View actual sea mostrada por el Spinner cerrado, pero cualquier cambio que realices aquí puede ser eliminado en la próxima selección del usuario, y el color alternativo puede volver más tarde si la View anterior Se recicla.

Para modificar el color del texto, cree un nuevo archivo xml en su carpeta res / layout (por ejemplo, my_spinner_text.xml). Agregue una vista de texto al nuevo archivo xml y modifique cómo desea:

 <TextView android:id="@+id/spinnerText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:textColor="#CCCCCC" android:textSize="20dp" xmlns:android="http://schemas.android.com/apk/res/android"/> 

Cree un ArrayAdapter que utilice el nuevo TextView y defínalo en su hiladora:

  Spinner localSpinner = (Spinner)findViewById(R.id.mySpinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_array, R.layout.my_spinner_text); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); localSpinner.setAdapter(adapter); 

Usted puede cambiar el color de texto o puede tener acceso al textview en el acontecimiento de setOnItemSelectedListener,

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

Para hacerlo programáticamente usted tiene que extender la clase del adaptador, algo como:

  ArrayAdapter<CharSequence> adapter = new ArrayAdater(this){ @Override public View getView(final int position, View convertView, ViewGroup parent) { View v = super.getView(position, convertView, parent); // change the color here of your v v. ... etc. etc } } 

Para el cambio Textcolor de Spinner cerrado que tengo hacer de esta manera funciona

 @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(R.layout.context_row_icon, null); } TextView mTitle = (TextView) view.findViewById(R.id.context_label); ImageView flag = (ImageView) view.findViewById(R.id.context_icon); mTitle.setText(values[position].getLabel(activity)); if (!((LabelItem) getItem(position)).isEnabled()) { mTitle.setTextColor(activity.getResources().getColor(R.color.context_item_disabled)); } else { mTitle.setTextColor(activity.getResources().getColor(R.color.context_item)); } return view; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(R.layout.context_row_icon, null); } TextView mTitle = (TextView) view.findViewById(R.id.context_label); ImageView flag = (ImageView) view.findViewById(R.id.context_icon); mTitle.setText(values[position].getLabel(activity)); mTitle.setTextColor(activity.getResources().getColor(R.color.context_item_disabled)); return view; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.