2012-07-04 18 views
15

Jak ustawić pokrętło w pasku akcji tak, aby inny element był zaznaczony (widoczny na pasku czynności), a następnie na liście rozwijanej? Przykład jest Gmail z pokrętła w pasku akcji:Zakrętarka paska narzędzi Android wybranego elementu, podtytułu i listy rozwijanej

action_bar_pattern_spinner

  • Jak oni osiągnąć tę funkcjonalność?
  • Czy mogę zmienić wybraną pozycję na pasku akcji bez wpływu na tę samą pozycję z rozwijanej listy?
  • Jak zmieniły się wybrane elementy na pasku akcji, aby miały dwa wiersze i różne czcionki, ale nie wpłynęły na pozycję na liście rozwijanej?
  • Czy można to osiągnąć przy domyślnej implementacji pokrętła paska akcji w ICS i pasku działań sherlock, czy też powinniśmy spróbować z niestandardowym widokiem?

Kod źródłowy, samouczek lub dokument byłby bardzo pomocny. Mam już spinner z adapterem w pasku akcji i mam listę w rozwijanym menu, ale nie mogę modyfikować w żaden sposób elementu bez wpływania na pozycję na liście rozwijanej (ponieważ są to te same rzeczy).

Odpowiedz

6

to może być trochę za późno, ale samouczek z skomentował kodów można znaleźć na Android stronie internetowej programu: http://developer.android.com/guide/topics/ui/actionbar.html#Dropdown

podstawy jest, że w trakcie aktywności OnCreate trzeba ustawić to być lista :

 getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 

a następnie utwórz adapter przędzarki i kilka połączeń zwrotnych, tak jak zrobiłbyś to z normalną tarczą.

nadzieję, że pomoże

20

Aby mieć inny pogląd na pasku akcji turbinki niż w liście do wirowania, można użyć BaseAdapter lub ArrayAdapter i zastąpić niektóre metody:

@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

Tak to jest właściwe rozwiązanie. – VladacusB

+4

Tak, tak to zrobili: [źródło] (https://android.googlesource.com/platform/packages/apps/Calendar.git/+/d31b90f25456652b81be7c8349d7e10db1fa9338/src/com/android/calendar/CalendarViewAdapter.java) – Jay

Powiązane problemy