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

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

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

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

2 ответа

Чтобы иметь другое представление в строке счетчика действий, чем в списке счетчиков, вы можете использовать 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);
 }


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

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

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

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

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

licensed under cc by-sa 3.0 with attribution.