Niestandardowe menu rozwijane z elementu akcji (actionbarsherlock)
Potrzebujęzwyczaj menu rozwijane dołączone do elementu akcji. Udało mi się zrobić to samo dla ikony domowej, ale wygląda na to, że robi się zupełnie inaczej z innymi elementami akcji.
Znam to pytanie i odpowiedź:Jak dodać element rozwijany na pasku akcji Mój problem polega na tym, że chcę go w pełni dostosować (używam niestandardowych czcionek, będę potrzebował ikon), więc chyba nie wystarczy podmenu. I dołączając zwyczajSpinner
jakoactionLayout
nie wygląda jak rozwijana.
Dla ikony domowej wygląda to tak:
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() {...});
I mogę dodać do niego swój własny projekt bez poświęcania rzeczy „rozwijanej”.Jak to zrobić z innymi elementami akcji?
EDYTOWAĆ: Znam tę aktywność za pomocąNAVIGATION_MODE_LIST
używaSpinner
(ListNavigationCallbacks używa aSpinnerAdapter
) ale wygląda lepiej i nie wiem, skąd wziąć te wszystkie style (jeśli to tylko to), aby wyglądać tak. Mam na myśli:
Dobry -> JakNAVIGATION_MODE_LIST
wygląda: zawija listę, jest dołączona pod ikoną domu.Zły -> Jak zwyczajSpinner
jakoactionLayout
wygląda: pasuje do szerokości ekranu z dodatkowym ciemnym tłem, zastępuje ikonę elementu akcji (jest to łatwe do zmiany), a przede wszystkim przyciemnia resztę ekranu. Wygląda raczej jak AlertDialog z niestandardową listą, a nie z rozwijanego menu.
Kod:
@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;
}