我需要自定義附加到操作項目的下拉菜單。我設法爲主圖標做了同樣的事情,但它看起來與其他操作項目完全不同。從操作項目(actionbarsherlock)自定義下拉菜單
我知道這個問題和回答:How to add a Dropdown item on the action bar 我的問題是,我想完全自定義它(我使用自定義字體,還需要圖標),這樣子菜單是不夠的,我想。附加一個自定義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;
}
考慮到你認爲「下拉」*是* Spinner,Spinner看起來就像是一個Spinner。您可以通過在層次結構視圖中使用'NAVIGATION_MODE_LIST'查看活動來說明這一點。也許你可能會考慮編輯你的問題來提供給你不喜歡的結果的源代碼。 – CommonsWare
感謝您的評論。我用代碼更新了我的問題,並解釋了我不喜歡Spinner的內容。 –