Cambiar el color del texto del elemento seleccionado en spinner

¿Cómo puedo cambiar el color de la fuente del elemento seleccionado en una rueda giratoria?

Puedo cambiar el color de fondo del elemento seleccionado, el color del elemento desplegable, etc., pero no el color del texto del elemento seleccionado … ¿cómo puedo hacer eso?

mi código es: esto es spinner que estoy usando–:

 

esto es mybg.xml

 <!--  --> <!--  -->      

usando estos no puedo cambiar el color del texto del artículo seleccionado …

   

Esto cambiará el color del elemento seleccionado en la ventana emergente.

solo use esta línea de código en su elemento seleccionado

 public void onItemSelected(AdapterView parent, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub item = (String) parent.getItemAtPosition(arg2); ((TextView) parent.getChildAt(0)).setTextColor(0x00000000); } 

intente implementar onItemSelected en su OnItemSelectedListener para cambiar el color del texto del elemento seleccionado de spinner

 public void onItemSelected(AdapterView adapterView, View view, int i, long l) { int index = adapterView.getSelectedItemPosition(); ((TextView) spinner.getSelectedView()).setTextColor(getResources().getColor(R.color.Blue)); //<---- 

usando selector como color de texto.

crea color_selector.xml en drawable como

          

y en textview

  

Puede cambiar el color del texto seleccionado agregando OnItemSelectedListener al spinner

 qtySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { ((TextView) view).setTextColor(Color.BLACK); //Change selected text color } @Override public void onNothingSelected(AdapterView parent) { } }); 

solo use esta línea en el listner seleccionado por el elemento –

 public void onItemSelected(AdapterView parent, View arg1, int arg2,long arg3) { item = (String) parent.getItemAtPosition(arg2); ((TextView) parent.getChildAt(0)).setTextColor(0x00000000); } 

Vea mi respuesta a una pregunta similar aquí . Mi respuesta es similar a la de Priya, excepto que también establece correctamente el color de texto predeterminado del elemento seleccionado (para que no haya retraso con el color incorrecto al esperar que el selector seleccione automáticamente el elemento predeterminado, que ocurre después de que la interfaz de usuario ya está encendida) pantalla).

Si su spinner está utilizando un ArrayAdapter, simplemente puede pasar un diseño personalizado para sus elementos spinner. Ese diseño puede ser un simple textView pero con el atributo android: textColor.

MainActivity.java onCreate ()

 adapter = new ArrayAdapter<>(this, R.layout.spinner_custom_textcolor, data); spinner.setAdapter(adapter); 

spinner_custom_textcolor.xml

  

* Todo desde el diseño anterior excepto para android: textColor es una copia directa de android.R.layout.simple_spinner_item

No necesita el código de Java para el cambio de color de fondo en Android 2.3v. Simplemente agrega android:background="#F0F8FF" a tu spinner en el archivo xml.

algunos de ustedes que usan MaterialBetterSpinner y Vinculando sus Diseños, todo lo anterior no ayudará, intente esto, espero que lo ayude:

 public class MyAdapter extends ArrayAdapter { public MyAdapter(Context context, int textViewResourceId, List objects) { super(context, textViewResourceId, objects); } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return getCustomView(position, convertView, parent); } @Override public View getView(int position, View convertView, ViewGroup parent) { return getCustomView(position, convertView, parent); } public View getCustomView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); final YourXMLBinding rowBinding = DataBindingUtil.inflate(inflater, R.layout.yourXML, parent,false); rowBinding.tv1.setText(mMy.getValues().get(position)); if(position == mMy.getCurrentIndex()) { rowBinding.tv1.setTypeface(Typer.set(getContext()).getFont(Font.ROBOTO_BOLD));//change font rowBinding.tv1.setTextColor(ContextCompat.getColor(getContext(), R.color.yourColor));//change color } return rowBinding.getRoot(); } } 

yourXML es algo como esto:

      

crea un spinner con este adaptador y tu XML:

 final MyAdapter adapter = new MyAdapter(getContext(), R.layout.yourXML, s.getValues()); final MaterialBetterSpinner spinner = new MaterialBetterSpinner(getContext()); spinner.setAdapter(adapter); 
 mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView adapterView, View view, int position, long l) { ((TextView) adapterView.getChildAt(0)).setTextColor(Color.WHITE); } 

La solución que funcionó para mí fue usar un CheckedTextView para la vista del recurso desplegable y luego cambiar el color del elemento marcado usando un selector de color.

spinner_dropdown_item.xml en la carpeta de layout :

    

spinner_color_selector en la carpeta de color :

       

spinner_dropdown_item.xml debe establecerse como DropDownResourceView para el Adapter . En mi caso, estoy usando un ResourceArrayAdapter que extrae información de múltiples fonts.

 // Setup a `MatrixCursor` for the static entries. String[] matrixCursorColumnNames = {DatabaseHelper._ID, DatabaseHelper.NAME}; MatrixCursor matrixCursor = new MatrixCursor(matrixCursorColumnNames); matrixCursor.addRow(new Object[]{-2, getString(R.string.first_spinner_item)}); matrixCursor.addRow(new Object[]{-1, getString(R.string.second_spinner_item)}); // Get a `Cursor` with the list of additional items from the database. Cursor cursor = DatabaseHelper.getCursor(); // Combine `matrixCursor` and `cursor`. MergeCursor mergeCursor = new MergeCursor(new Cursor[]{matrixCursor, foldersCursor}); // Create a `ResourceCursorAdapter` for the spinner with `this` context. `0` specifies no flags.; ResourceCursorAdapter resourceCursorAdapter = new ResourceCursorAdapter(this, R.layout.spinner_item, mergeCursor, 0) { @Override public void bindView(View view, Context context, Cursor cursor) { // Get a handle for the spinner item `TextView`. TextView spinnerItemTextView = (TextView) view.findViewById(R.id.spinner_item_textview); // Set the `TextView` to display the name. spinnerItemTextView.setText(cursor.getString(cursor.getColumnIndex(DatabaseHelper.NAME))); } }; // Set the `ResourceCursorAdapter` drop drown view resource. resourceCursorAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item); // Get a handle for the `Spinner`. Spinner spinner = (Spinner) findViewById(R.id.spinner); // Set the adapter for the folder `Spinner`. spinner.setAdapter(resourceCursorAdapter); 

Debido a que ResourceCursorAdapter usa el mismo bindView para llenar el spinner cuando está abierto y cerrado, la identificación del TextView en spinner_dropdown_item.xml y spinner_item.xml debe ser la misma.

spinner_item.xml en la carpeta de layout :

   

Sé que esta es una vieja pregunta, pero tuve un gran problema para cambiar el color del elemento seleccionado en spinner en TabLayout y esto realmente funcionó para mí:

 spinner.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { ((TextView) spinner.getSelectedView()).setTextColor(Color.WHITE); //change to your color } });