我需要连接到一个操作项自定义下拉菜单。 我能够做到的主页图标同样的事情,但似乎,它的工作与其他行动项目完全不同。
我知道这个问题,并回答: 如何添加下拉项操作栏上的我的问题是,我想完全自定义它(我使用自定义字体,还需要图标),这样子菜单是不够的,我想。 并附加一个自定义的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() {...});
我可以添加自己的设计,它在不牺牲“下拉”的事情。 如何与其他行动项目办呢?
编辑:我知道使用活动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<NavItem> data = new ArrayList<NavItem>();
data.add(...);
data.add(...);
ActionBarNavAdapter adapter = new ActionBarNavAdapter(...);
spinner.setAdapter(adapter);
sortItem.setActionView(spinner);
return true;
}