Wenn ich mir den API-Diff-Bericht für die Android "L" -Vorschau anschaue, sehe ich, dass alle Methoden sich auf Navigationsmodi in der ActionBar
Klasse beziehen (zsetNavigationMode()
, addTab()
, selectTab()
, usw). sind jetzt veraltet.
Die Dokumentation erklärt:
Die Navigationsmodi der Aktionsleiste sind veraltet und werden von den Aktionsleisten der Inline-Symbolleiste nicht unterstützt. Verwenden Sie stattdessen andere gängige Navigationsmuster.
Was ist der angebliche Ersatz?
Ist "Inline-Symbolleisten-Aktionsleisten" ein neues Konzept? Ich glaube nicht, dass ich schon einmal davon gehört habe.
Antworten:
Die neue Android Design Support Library fügt TabLayout hinzu und bietet eine Tab-Implementierung, die den Materialdesign-Richtlinien für Tabs entspricht . Eine vollständige Anleitung zur Implementierung von Tabs
ViewPager
finden Sie in diesem VideoJetzt veraltet: Der PagerTabStrip ist Teil der Support-Bibliothek (und das schon seit einiger Zeit) und dient als direkter Ersatz. Wenn Sie die neueren Registerkarten im Google Play-Stil bevorzugen, können Sie die PagerSlidingTabStrip-Bibliothek verwenden oder eines der von Google bereitgestellten Beispiele SlidingTabsBasic oder SlidingTabsColors ändern, wie in diesem Dev Bytes-Video erläutert .
quelle
NAVIGATION_MODE_LIST
ist viel einfacher, da nur ein Spinner und einige Rückruf-Helfer hinzugefügt wurden .NAVIGATION_MODE_LIST
? Meins listet es als veraltet auf ...Nachdem die Android 5.0-Dokumente verfügbar sind, haben wir die offizielle Dokumentation für das Toolbar-Widget :
Ein
Toolbar
Widget kann auch verwendet werden, um die Aktionsleiste zu ersetzen:Die Ablehnung von Registerkarten in der Aktionsleiste ist höchstwahrscheinlich darauf zurückzuführen, da Symbolleisten selbst keine Registerkarten enthalten können.
Es ist auch für frühere Android-Versionen über die Appcompat-Bibliothek verfügbar. Weitere Informationen finden Sie in diesem Beitrag von Chris Banes . Ein Ausschnitt:
quelle
Es scheint, als hätten sie eine neue Klasse mit dem Namen
android.widget.Toolbar
erweitertViewGroup
. Auch hat sie eine neue MethodesetActionBar(Toolbar)
inActivity
. Ich habe es noch nicht getestet, aber es sieht aus wie Sie alle Arten von wickeln könnenTabWidgets
,Spinners
oder benutzerdefinierten Ansichten in eineToolbar
und es als ActionBar verwenden.quelle
Das neue
Toolbar
kann nicht zum Aufblasen mehrerer Linienobjekte verwendet werden, daher ist es unmöglich, Tabulatoren hinzuzufügen.Wenn Sie ein
Toolbar
wie ein verwenden möchtenTabWidget
können Sie einige Tab-Objekte einfügen, jedoch nur mit dem alten Holo-Stil.Hier gibt es eine benutzerdefinierte Bibliothek, die v7
Toolbar
wieTabWidget
bei den neuen Material Design-Animationen verwendet, jedoch dieselben Methoden wie die alten verwendetActionBar Tabs
, sodass Sie Ihre Bibliothek daran anhängen könnenViewPager
.quelle
Für das 'Ersetzen' der veralteten ActionBar habe ich den Typ meiner Variablen vom Typ ActionBar gemäß (alter Code im Kommentar) in PagerTabStrip geändert:
Ein 'Ersatz' für ~ actionBars .selectTab (tabindex) war die Verwendung der .setCurrentItem (int) -Methode meines zugehörigen ViewPager wie folgt (alter Code im Kommentar):
Hoffe das ist hilfreich.
quelle
Ich hatte das gleiche Problem und diese Lösung passte mir ganz gut:
Fügen Sie in der Layout-XML-Datei, die den Viewpager enthält, einen PagerTabStrip wie folgt hinzu:
Fügen Sie Ihrer ViewPager-Datei eine switch-Anweisung hinzu, um Seitentitel zu steuern:
quelle
FragmentTabHost ist ebenfalls eine Option.
Dieser Code stammt von der Android-Entwicklerseite:
quelle
Ich fand diese Tutorials hilfreich, als ich eine Aktionsleiste (jetzt die 'Symbolleiste' - argh) zusammenstellte, die Schiebelaschen mit Material Design unterstützt:
https://www.youtube.com/watch?v=Fl0xMuo10yA
http://www.exoguru.com/android/material-design/navigation/android-sliding-tabs-with-material-design.html
Sie müssen diese Ressourcen so zusammenfassen, dass sie Ihrer speziellen Situation entsprechen. Beispielsweise möchten Sie die Registerkarten möglicherweise nicht manuell im gleichen Stil wie im exoguru.com-Lernprogramm erstellen.
quelle
Gut für mich, die veraltete Navigationssymbolleiste mithilfe der Symbolleiste v7 Widget Appcompat zu handhaben.
quelle
Ich denke, ein geeigneter Ersatz für drei bis fünf gleich wichtige Bildschirme ist die BottomNavigationActivity, mit der Fragmente gewechselt werden können.
Sie werden feststellen, dass in Android Studio ein Assistent dafür vorhanden ist. Seien Sie jedoch vorsichtig, da Android Studio dazu neigt, übermäßig komplexen Code für die Kesselplatte zu erzeugen.
Ein Tutorial finden Sie hier: https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f
Ein weiteres qualitativ hochwertiges Tutorial finden Sie bei Android Hive hier: https://www.androidhive.info/2017/12/android-working-with-bottom-navigation/
quelle