2013-04-30 5 views
0

я, наконец, удалось получить ICS стиле блесну в Android 2.3.x ActionBar моего вкладками навигации Шерлока фрагмента, используя этот код:Более CustomView в ActionBar

ActionBar bar = getSherlockActivity().getSupportActionBar(); 
    bar.setDisplayHomeAsUpEnabled(true); 
    int dropDownStyle = R.attr.actionDropDownStyle; 

    ArrayAdapter<String> someAdapter = new ArrayAdapter<String>(getSherlockActivity() 
      .getSupportActionBar().getThemedContext(), R.layout.sherlock_spinner_dropdown_item, 
      new String[] { 
        "Last 7 days", "Last month", "Last 6 months", "Last year" 
      }); 

    IcsSpinner mySpinner = new IcsSpinner(getActivity(), null, dropDownStyle); 
    mySpinner.setAdapter(someAdapter); 
    mySpinner.setOnItemSelectedListener(new IcsAdapterView.OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(IcsAdapterView<?> parent, View view, int position, long id) { 
      switch (position) { 
       //do stuff 
      } 

     } 

     @Override 
     public void onNothingSelected(IcsAdapterView<?> parent) { 
      // simulate a click on the first item of the spinner 
      //do stuff 

     } 

    }); 
    bar.setCustomView(mySpinner); 
    bar.setDisplayShowCustomEnabled(true); 

, который показывает, как так:

first tab showing ics spinner in 2.3.x

Но на следующей вкладке в ActionBar должно быть 2 ICS-прядения. (Раньше, чтобы использовать ABS, у меня был счетчик в Activity, а опции для второго счетчика были в стандартном меню опций.)

Когда я пытаюсь добавить второй CustomView, он перезаписывает (заменяет? Overdraws?) первый один (я добавляю как во втором фрагменте, с разными названиями), например, так:

second tab showing just 1 spinner

можно ли иметь 2 CustomViews в ActionBar, или я ложное дерево? Как же тогда добиться успеха в 2-мя клинках ICS в ActionBar?

+0

Чтобы добавить несколько видов, вы должны просто их обернуть в контейнер, а затем установить этот контейнер как пользовательский вид в ActionBar. То есть горизонтальный 'LinearLayout' звучит как хороший кандидат. –

+0

Так просто, так элегантно! Я действительно спускался по пути «более сложного». Можете ли вы добавить свой ответ в качестве ответа, чтобы я мог его принять? – DaveSav

ответ

0

В соответствии с ранее комментарий:

Для того, чтобы добавить несколько представлений, вы должны просто быть в состоянии обернуть их в контейнер, а затем установить этот контейнер в качестве настраиваемого представления на ActionBar. То есть горизонтальный LinearLayout звучит как хороший кандидат.

Смежные вопросы