Выбранный элемент панели задач Android, список субтитров и выпадающий список

Как я могу сделать spinner в панели действий для выбора другого элемента (отображается в верхней части панели действий), а затем в раскрывающемся списке? Пример: почта google с spinner в панели действий:

action_bar_pattern_spinner

  • Как они достигли этой функциональности?
  • Могу ли я изменить выбранный элемент в панели действий, не затрагивая один и тот же элемент в раскрывающемся списке?
  • Как они изменили выбранный элемент в панели действий, чтобы иметь две строки и разные шрифты, но не повлияли на элемент в раскрывающемся списке?
  • Можно ли это достичь, используя стандартную реализацию spinner панели действий в ICS и sherlock панели действий или мы должны попробовать с пользовательским представлением?

Любой исходный код, учебник или документ будут действительно полезны. У меня уже есть привязка с адаптером в панели действий, и у меня есть список в выпадающем меню, но я никак не могу изменить элемент, не затрагивая элемент в выпадающем списке (потому что это одно и то же).

Ответы

Ответ 1

Чтобы иметь другое представление в строке счетчика действий, чем в списке счетчиков, вы можете использовать BaseAdapter или ArrayAdapter и переопределить некоторые методы:

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

Ответ 2

возможно, слишком поздно, но учебник с комментариями можно найти на веб-сайте разработчика Android: http://developer.android.com/guide/topics/ui/actionbar.html#Dropdown

основы в том, что во время действия OnCreate вы должны установить его как список:

      getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

а затем создайте адаптер-обтекатель и пару обратных вызовов, как если бы вы сделали с обычным счетчиком.

надеюсь, что это поможет