2012-07-04 53 views
15

¿Cómo puedo hacer que la flecha en la barra de acción tenga diferentes elementos seleccionados (que se muestran en la parte superior de la barra de acciones) y luego el de la lista desplegable? ejemplo es Google Mail con el hilandero en la barra de acción:Android barra de acciones spinner elemento seleccionado, subtítulos y lista desplegable

action_bar_pattern_spinner

  • ¿Cómo alcanzaron esta funcionalidad?
  • ¿Pude cambiar el elemento seleccionado en la barra de acciones sin afectar el mismo elemento en la lista desplegable?
  • ¿Cómo cambiaron el elemento seleccionado en la barra de acciones para tener dos filas y fuentes diferentes pero no afectaron el elemento en la lista desplegable?
  • ¿Es posible lograr esto con la implementación predeterminada de la barra de acciones giratoria en ICS y barra de acciones sherlock o deberíamos intentarlo con una vista personalizada?

Cualquier código fuente, tutorial o documento sería realmente útil. Ya tengo link spinner con adaptador en la barra de acción y tengo una lista en el menú desplegable, pero no puedo modificar de ninguna manera el elemento sin afectar el elemento en la lista desplegable (porque son la misma cosa).

Respuesta

6

que podría ser un poco demasiado tarde, pero el tutorial con los códigos comentadas se puede encontrar en el sitio web de desarrolladores de Android: http://developer.android.com/guide/topics/ui/actionbar.html#Dropdown

lo básico es que durante la actividad OnCreate tiene que establecer que sea una lista :

 getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 

y luego crear un adaptador giratorio y un par de devoluciones de llamada al igual que lo haría con un control de giro normal.

creo que sirve

20

Para tener una visión diferente en el spinner barra de acción que en la lista spinner, se puede utilizar una o un ArrayAdapter BaseAdapter y anular algunos métodos:

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    // Return a view which appears in the action bar. 

    return yourCustomView..; 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
    // Return a view which appears in the spinner list. 

    // Ignoring convertView to make things simpler, considering 
    // we have different types of views. If the list is long, think twice! 
    return super.getView(position, null, parent); 
    } 
+0

Si este es el solución adecuada – VladacusB

+4

sí, así es como lo hicieron: [fuente] (https://android.googlesource.com/platform/packages/apps/Calendar.git/+/d31b90f25456652b81be7c8349d7e10db1fa9338/src/com/android/calendar/CalendarViewAdapter.java) – Jay

Cuestiones relacionadas