2012-08-22 32 views
5
barra

Mi acción se encuentra actualmente como esto:¿Cómo cambiar el color del texto de IcsSpinner en ActionBarSherlock?

enter image description here

i quieren que sea así:

enter image description here

ignoran la línea de negro al lado del logotipo. Principalmente lo que quiero es a change the color of the text in the IcsSpinner to white

mi código de actividad es:

ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this, 
      R.layout.sherlock_spinner_item, cities); 
    listAdapter 
      .setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item); 
    setContentView(mViewPager); 
    final ActionBar bar = getSupportActionBar(); 
    bar.setCustomView(R.layout.custom_actionbar); 
    bar.setIcon(R.drawable.logo); 
    bar.setDisplayShowCustomEnabled(true); 
    IcsSpinner citySpinner = (IcsSpinner) (bar.getCustomView()) 
      .findViewById(R.id.city_spinner); 
    citySpinner.setAdapter(listAdapter); 

y mi custom_actionbar.xml es:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:gravity="right|center_vertical" 
    android:orientation="horizontal" > 

    <com.actionbarsherlock.internal.widget.IcsSpinner 
     android:id="@+id/city_spinner" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent"/> 

</RelativeLayout> 

me quiero ni la ruleta sea just left to the refresh icon. Como en la segunda imagen.

Gracias

Respuesta

15

Es necesario utilizar getSupportActionBar().getThemedContext()Context como el dado a la instancia del adaptador para inflar diseños. Esto utilizará cualquier tema que sea apropiado para inflar widgets dentro de la barra de acciones en lugar del conjunto de temas para el contenido de su actividad.

+0

sí que resolvió en cambiar el color del texto. muchas gracias. pero ¿cómo puedo cambiar la posición de IcsSpinner al lado derecho? como en la 2da imagen –

+0

No puede cambiar dónde se muestra. Si necesita más control sobre algo así, debe usar una vista de acción personalizada. –

1

Sólo para complementar la respuesta aceptada: esto funcionó para mí después de tener alguna extraña NullPointerException al intentar crear nueva ArrayAdapter usando constructor

ActionBar actionBar = getSupportActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    ArrayAdapter<CharSequence> adapter = 
     ArrayAdapter.createFromResource(actionBar.getThemedContext(), 
     R.array.action_list, android.R.layout.simple_spinner_dropdown_item); 
    actionBar.setListNavigationCallbacks(adapter, this); 
    actionBar.setDisplayShowTitleEnabled(false); 
Cuestiones relacionadas