我需要一个附加到操作项的自定义下拉菜单.我设法为主页图标做同样的事情,但似乎与其他动作项目完全不同.
我知道这个问题和答案:How to add a Dropdown item on the action bar
我的问题是我想完全自定义它(我使用自定义字体,也需要图标),所以子菜单是不够的,我想.将自定义Spinner附加为actionLayout看起来就像下拉一样.
对于主页图标,它看起来像这样:
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayList data = new ArrayList();
data.add(...);
data.add(...);
ActionBarNavAdapter adapter = new ActionBarNavAdapter(...);
actionBar.setListNavigationCallbacks(adapter, new OnNavigationListener() {...});
我可以在不牺牲“下拉”的情况下添加自己的设计.
如何使用其他动作项目?
编辑:
我知道使用NAVIGATION_MODE_LIST的活动使用Spinner(ListNavigationCallbacks使用SpinnerAdapter),但它看起来更好,我不知道从哪里获取所有这些样式(如果它只是那样)使它看起来像那样.我的意思是:
好 – > NAVIGATION_MODE_LIST的外观如何:它正在包装列表,它附在主页图标下面.
不好 – >自定义Spinner作为actionLayout的外观如何:它将屏幕宽度与一些额外的深色背景相匹配,替换了操作项图标(这很容易更改),最重要的是,使屏幕的其余部分变暗.它看起来更像是带有自定义列表的AlertDialog,而不是下拉菜单.
码:
@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 data = new ArrayList();
data.add(...);
data.add(...);
ActionBarNavAdapter adapter = new ActionBarNavAdapter(...);
spinner.setAdapter(adapter);
sortItem.setActionView(spinner);
return true;
}