Пользовательский выпадающий список от элемента действия (actionbarsherlock)
мне нужноcustom раскрывающееся меню, прикрепленное к элементу действия. Мне удалось сделать то же самое для иконки дома, но, похоже, это было совершенно иначе с другими элементами действий.
Я знаю этот вопрос и ответ:Как добавить выпадающий элемент на панели действий
Моя проблема заключается в том, что я хочу полностью настроить его (я использую пользовательские шрифты, также потребуются значки), поэтому, я полагаю, подменю будет недостаточно. И прикрепление кастомаSpinner
какactionLayout
выглядит совсем не так, как выпадающий.
Для значка дома это выглядит так:
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayList<NavItem> data = new ArrayList<NavItem>();
data.add(...);
data.add(...);
ActionBarNavAdapter adapter = new ActionBarNavAdapter(...);
actionBar.setListNavigationCallbacks(adapter, new OnNavigationListener() {...});
И я мог бы добавить к этому свой собственный дизайн, не жертвуя «выпадающим списком». вещь. How to do it with other action items?
EDIT:
Я знаю, что деятельность с использованиемNAVIGATION_MODE_LIST
использованияSpinner
(ListNavigationCallbacks используетSpinnerAdapter
), но выглядит лучше, и я не знаю, где взять все эти стили (если это только так), чтобы это выглядело так. Я имею в виду:
Good - & GT; КакNAVIGATION_MODE_LIST
выглядит: он упаковывает список, он прикреплен под значком дома.
Bad - & GT; Как обычайSpinner
какactionLayout
выглядит: он соответствует ширине экрана с некоторым дополнительным темным фоном, заменяет значок элемента действия (это легко изменить) и, прежде всего, затемняет остальную часть экрана. Это выглядит скорее как AlertDialog с настраиваемым списком, а не с раскрывающимся меню.
Code:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem sortItem = menu.findItem(R.id.sort);
Spinner spinner = new Spinner(this);
//this is the same adapter because I didn't want to spend time creating a new one
//ActionBarNavAdapter extends SpinnerAdapter of course
ArrayList<NavItem> data = new ArrayList<NavItem>();
data.add(...);
data.add(...);
ActionBarNavAdapter adapter = new ActionBarNavAdapter(...);
spinner.setAdapter(adapter);
sortItem.setActionView(spinner);
return true;
}