Пользовательский выпадающий список от элемента действия (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;
}

Ответы на вопрос(1)

Ваш ответ на вопрос