2012-01-22 19 views
9

W Androidzie możesz ustawić listę nawigacyjną na pasku akcji, przekazując adapter spinner i OnNavigationListener. problem jest to, że lista nawigacja nie wypełnić większość pasku akcji, jak uczynić go rozwijać tak jak w aplikacji Gmail: Przykład aplikacji Gmail:Jak rozwinąć listę nawigacji w pasku akcji?

enter image description here

Moja aplikacja:

enter image description here

A oto kod:

//... setting the array adapter 
ActionBar actionBar = getActionBar(); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
NavigationListener navigationListener = new NavigationListener(); 
ListAdapter listAdapter = new ListAdapter(); 
actionBar.setListNavigationCallbacks(listAdapter, navigationListener); 
actionBar.setDisplayShowTitleEnabled(false); 

Inny problem mam twarz jest wielkość element spinner, pokazują się naprawdę małe, czy to dlatego, że nie przekazuję spersonalizowanego tekstu (patrz zrzut ekranu)? przykładem tego, co mam zrobić:

private class ListAdapter extends BaseAdapter implements SpinnerAdapter { 

    public View getView(int pos, View view, ViewGroup viewGroup) { 
     TextView text = new TextView(context); 
     text.setText(arrayAdapter.getItem(pos).toString()); 
     return text; 
    } 

} 

Odpowiedz

11

Chcesz wdrożyć metodę getDropDownView też. Dzięki temu możesz podać inny widok listy rozwijanej z danymi i formatowaniem, które chcesz.

Należy rozważyć zawyżenie układów ramek android.R.layout.simple_spinner_item i android.R.layout.simple_spinner_dropdown_item w tych sytuacjach. Użyj findViewById(android.R.id.text1), aby uzyskać TextView, którą powinieneś wypełnić w każdym z nich.

+0

+1, dziękuję za link getDropDownView – orip

-1

Być może możesz użyć ActionBar tab navigation i dodawać ikony do kart, a nie do nawigacji listy, ponieważ nawigacja gmail wygląda bardziej jak nawigacja na kartach.

Powiązane problemy