12

Teraz wszystkie metody związane z trybami nawigacji w klasie ActionBar, takie jak setNavigationMode() ... są teraz przestarzałe.jak ustawić NAVIGATION_MODE_LIST na pasku narzędzi nowa aplikacja compat v7 21

Dokumentacja wyjaśnia:

Action bar navigation modes are deprecated and not supported by inline toolbar action bars. Consider using other common navigation patterns instead. 

W moim bieżącej aplikacji, istnieje spinner na ActionBar. Jak zastosować NAVIGATION_MODE_LIST na nowym widżecie Pasek narzędzi w nowej aplikacji appcompat v7 21.
Z góry dziękuję.

Odpowiedz

17

Z API 21 metoda setNavigationMode(ActionBar.NAVIGATION_MODE_LIST) to deprecated.

Najlepszym sposobem, aby pracować z turbinki jest użycie Toolbar tak:

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar_actionbar" 
     android:layout_height="?attr/actionBarSize" 
     android:layout_width="match_parent" 
     android:background="?attr/colorPrimary"> 

    <Spinner 
      android:id="@+id/spinner_toolbar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

</android.support.v7.widget.Toolbar> 

można znaleźć przykładowo w Google IO 2014

+0

Dzięki Spróbuję to –

+1

Czy możesz powiedzieć rozwiązanie ustawić NAVIGATION_MODE_TAB na pasku narzędzi –

+1

nie istnieje Użyj SlidingTabsBasic warunkiem tutaj:. Http://developer.android. com/samples/SlidingTabsBasic/index.html –

5

jak zwykle Gabriele ma rację, więc Twój kod będzie wyglądać tak:

tak będzie wyglądać coś takiego:

private ActionBar actionBar; 
    private Toolbar toolbar; 
    private Spinner spinner; 
    private List<String> mNavigationItems; 
    private ArrayAdapter<CharSequence> mArrayAdapter; 
    /*** 
    * Boolean to know which version is running 
    */ 
    private boolean postICS,postLollipop; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_nav_list);//find the toolbar 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     postLollipop =getResources().getBoolean(R.bool.postLollipop); 
     if(postLollipop){ 
      toolbar.setElevation(15); 
     } 
     //define the toolbar as the ActionBar 
     setSupportActionBar(toolbar); 
     actionBar=getSupportActionBar(); 
     //now manage the spinner 
     mNavigationItems=new ArrayList<String>(); 
     mNavigationItems.add("navigation 1"); 
     mNavigationItems.add("nav 2"); 
     mNavigationItems.add("navigation 3"); 
     spinner= (Spinner) findViewById(R.id.action_bar_spinner); 
     mArrayAdapter = new ArrayAdapter(this, R.layout.actionbar_spinner_dropdown_item, mNavigationItems); 
     mArrayAdapter.setDropDownViewResource(R.layout.actionbar_spinner_dropdown_item); 
     spinner.setAdapter(mArrayAdapter); 
    } 

Uważaj, aby nie używać spinnerAdapter (ponieważ nie będziesz w stanie zarządzać swoim stylem za pomocą AppTheme).

A jeśli chcesz korzystać z zakładką (NavigationMode.Tabs) należy użyć teraz Biblioteki projektu (wyjaśnione tutaj: pasty http://android-developers.blogspot.fr/2015/05/android-design-support-library.html?m=1)and Skopiuj poniższy "

Tabs Przełączanie między różnymi widokami w aplikacji poprzez Tabs nie nowa koncepcja do materiału konstrukcji i są równie w domu jako najlepszy poziomu wzór nawigacyjnego lub do organizowania różnych ugrupowań zawartości wewnątrz aplikacji (powiedzmy, różne gatunki muzyki).

Konstrukcja biblioteki TabLayout wyko Obydwa stałe zakładki, w których szerokość widoku jest równo dzielona między wszystkie zakładki, a także przewijane zakładki , w których zakładki nie mają jednolitego rozmiaru i mogą przewijać się w poziomie w poziomie o 180 mm. Tabulatory można dodawać programowo:

TabLayout tabLayout = ...; tabLayout.addTab (tabLayout.newTab(). SetText ("Tab 1")); Jeśli jednak użytkownik korzysta z narzędzia ViewPager do poziomego stronicowania między kartami, można utworzyć karty bezpośrednio z funkcji getPageTitle(), a następnie połączyć je za pomocą metody setupWithViewPager(). Gwarantuje to, że zdarzenia wyboru tabulatora aktualizują ViewPager, a zmiany strony aktualizują wybraną zakładkę . .

"

+1

Musiałem użyć R.layout.support_simple_spinner_dropdown_item zamiast R.layout.actionbar_spinner_dropdown_item, w przeciwnym razie pracował dla mnie. – Mick