я, наконец, удалось получить 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);
, который показывает, как так:
Но на следующей вкладке в ActionBar должно быть 2 ICS-прядения. (Раньше, чтобы использовать ABS, у меня был счетчик в Activity, а опции для второго счетчика были в стандартном меню опций.)
Когда я пытаюсь добавить второй CustomView, он перезаписывает (заменяет? Overdraws?) первый один (я добавляю как во втором фрагменте, с разными названиями), например, так:
можно ли иметь 2 CustomViews в ActionBar, или я ложное дерево? Как же тогда добиться успеха в 2-мя клинках ICS в ActionBar?
Чтобы добавить несколько видов, вы должны просто их обернуть в контейнер, а затем установить этот контейнер как пользовательский вид в ActionBar. То есть горизонтальный 'LinearLayout' звучит как хороший кандидат. –
Так просто, так элегантно! Я действительно спускался по пути «более сложного». Можете ли вы добавить свой ответ в качестве ответа, чтобы я мог его принять? – DaveSav