Aktionsleiste Navigationsarten sind im Android L veraltet

? matiash @ | Original: StackOverFlow
---

Ein Blick auf die API diff Bericht für das Android "L" Vorschau, sehe ich, dass alle Methoden zur Navigation Modi in der ActionBar Klasse bezogen ( wie setNavigationMode(), addTab(), selectTab(), & amp; c) . sind jetzt veraltet .

Die Dokumentation erklärt:

Aktionsleiste Navigationsmodi sind veraltet und nicht durch Inline unterstützt   Symbolleiste Aktionsleisten . Betrachten Sie mit anderen gängigen Navigationsmuster   statt .

Was ist der vermeintliche Ersatz?

Außerdem ist "inline Symbolleiste Aktionsleisten " ein neues Konzept ? Ich glaube nicht, ich habe davon gehört .

---

Top 5 Antwort

1ianhanniballake @

Die http://developer.android.com/reference/android/support/v4/view/PagerTabStrip.html ist Teil der Support-Bibliothek ( und hat seit einiger Zeit ) und dient als direkter Ersatz . Wenn Sie die neueren Google Play Stil Registerkarten, können Sie die https://github.com/astuetz/PagerSlidingTabStrip verwenden oder modifizieren, entweder der Google zur Verfügung gestellten Beispielen http://developer.android.com/samples/SlidingTabsBasic/index.html können oder http://developer.android.com/samples/SlidingTabsColors/index.html wie in diesem https://www.youtube.com/watch?v=tRg_eDfQ8fk erläutert.

2Kuno @

Es scheint, wie sie eine neue Klasse mit dem Namen android.widget.Toolbar, die sich ViewGroup aufgenommen. Auch sie hat eine neue Methode setActionBar(Toolbar) in Activity . Ich habe es noch nicht getestet, aber es sieht aus wie Sie können alle Arten von wrap TabWidgets, Spinners oder benutzerdefinierte Ansichten zu einer Toolbar, und verwenden Sie es als ActionBar .

3matiash @

Nun, da die Android 5.0 -Dokumente zur Verfügung stehen, haben wir die https://developer.android.com/reference/android/widget/Toolbar.html :

Ein Standard-Symbolleiste für den Einsatz in Anwendungsinhalten .

Eine Toolbar ist eine Verallgemeinerung des Aktionsleisten für den Einsatz in   Anwendungslayouts. Während eine Aktionsleiste ist traditionell Bestandteil ein   Undurchsichtigen FensterdekorTätigkeit durch den Rahmen, eine Symbolleiste gesteuert   kann an einer beliebigen Schachtelungsebene innerhalb einer Ansicht platziert werden   Hierarchie.

A Toolbar Widget kann auch verwendet werden, um die Aktionsleiste ersetzen :

Eine Anwendung kann wählen, um eine Symbolleiste, wie der Aktionsleiste für bezeichnen   eine Aktivität mit dem setActionBar() -Methode.

Die Missbilligung der Registerkarten in der Aktionsleiste ist höchstwahrscheinlich auf diese, da Symbolleisten Registerkarte selbst nicht enthalten .

Außerdem ist es für die bisherigen Android verions über die appcompat Bibliothek zur Verfügung . Siehe https://chris.banes.me/2014/10/17/appcompat-v21/ für weitere Informationen. Ein Auszug :

Android 5.0 führt eine neue Toolbar -Widget . Dies ist eine Verallgemeinerung   des ActionBar -Muster, sondern gibt Ihnen viel mehr Kontrolle und   Flexibilität bei der Benutzung . Toolbar ist eine Ansicht, in der Hierarchie wie   andere, wodurch es einfacher, mit dem Rest der Ihre Ansichten zu verschachteln ,   animieren, reagieren auf Ereignisse zu blättern.

4NeoKree @

Die neue Toolbar kann nicht zum Aufblasen mehrzeilige Objekte verwendet werden, so dass es unmöglich ist, Tabs hinzufügen. Wenn Sie verwenden möchten, ein Toolbar wie ein TabWidget Sie einige Tab -Objekte, um sie einfügen können, aber nur mit dem alten Holo -Stil.

https://github.com/neokree/MaterialTabs gibt es eine benutzerdefinierte Bibliothek, die v7 Toolbar wie TabWidget mit dem neuen Material Design -Animationen verwendet, aber es werden die gleichen Methoden aus der alten ActionBar Tabs, und schauen Sie anhängen Ihre ViewPager, um es .

5applesauced @

Für ' Ersatz' der veralteten ActionBar, änderte ich die Art meines ActionBar - Typ Variablen PagerTabStrip, nach (alte Code in der Anmerkung ) :

// ActionBar bigActionBar;
PagerTabStrip bigActionBar;

A ' Ersatz' für ~ ActionBar der .selectTab ( ​​tabindex ) war es, .setCurrentItem (int ) -Methode meine verbunden ViewPager ist wie dieser ( alten Code in der Anmerkung ) zu verwenden, :

/*
ActionBar.Tab eventTab = bigActionBar.getTabAt(2);
bigActionBar.selectTab(eventTab);
*/
mViewPager.setCurrentItem(2);

Hoffe, das ist hilfreich.