Ich habe einer meiner Apps eine Navigationsleiste hinzugefügt, und ich begann mich zu fragen, ob es besser wäre, von ListView
auf mehrere TextView
s für die Listenelemente der Navigationsleiste umzuschalten. Sehen Sie sich die Google Design-Richtlinien für Inhalte der Navigationsleiste an (insbesondere den Abschnitt über ' Scrolling ') , mir ist aufgefallen, dass es mit mehreren TextView
s schöner aussieht.
Im Moment verwende ich ListView
und ImageView
in meiner Navigationsleiste (es sieht ein bisschen wie das Wenn ich jedoch in meiner Navigationsleiste blättrele (ich mache das, indem ich meine Gerätelandschaft drehe, weil es noch nicht genügend Elemente in meiner Liste gibt), dann nur das ListView
scrollt und der ImageView
bleibt so wie er ist. Ich möchte, dass er mehr scrollen kann wie dies, wo das ImageView
auch mit dem ListView
gescrollt wird.
Außerdem habe ich festgestellt, dass mein ListView
in meiner Navigationsleiste nicht die Auswirkungen hat. wie in diesem Bild gezeigt , obwohl andere ListView
s in meinen anderen Activity
s und Fragment
s tun.
Was sind die Probleme, vor denen ich stehe, und wie könnte ich diese Probleme lösen?
In der E / A-App von Google (2014) scheint am unteren Rand von Layout der Navigationsleiste , das meiner Meinung nach für die Liste der angezeigten Elemente verantwortlich ist. Könnte jemand erklären, wie das funktionieren würde?
Nur der ListView scrollt und das ImageView bleibt so wie es ist
Es klingt, als ob Ihre Schublade oben ein ImageView
enthält und dann ein ListView
folgt. Bei dieser Konfiguration wird nur der ListView
geblättert (weil es die einzige Ansicht ist, die scrollbar ist).
Sie müssen ImageView
als Kopfzeile hinzufügen, die immer am Anfang der Liste steht. Wie einer der Kommentare vorgeschlagen, tun Sie listView.addHeaderView
.
Es scheint ein LinearLayout am Ende der Navigation zu sein Schubladenlayout, von dem ich denke, dass es für die Artikelliste verantwortlich ist gezeigt. Könnte jemand erklären, wie das funktionieren würde?
Sie verwenden den LinearLayout
als Container, um alle TextView
s:
Ich glaube, der Grund, warum sie ein LinearLayout
verwenden und alle Elemente programmatisch aufblasen, ist die einfache Verwendung von Trennelementen:
In einem ListView
müssten Sie einen separaten Elementtyp erstellen und dort das Layout des Teilers verwenden, was möglicherweise umständlicher wird.
Auf den ersten Blick scheint dieser Code jedoch das Rad neu zu erfinden, da all dies mit ListView
möglich ist.
Ab dem 29. Mai 2015 (nach Google I / O 2015 ) können Sie mithilfe der Android Design Support-Bibliothek ein NavigationView
für Ihre App (s). Im Android Developer Blogspot-Artikel ist Folgendes angegeben:
Navigationsansicht
Der Navigationsbereich kann ein wichtiger Schwerpunkt für die Identität und Navigation innerhalb Ihrer App sein und die Konsistenz im Design kann einen erheblichen Unterschied in der Navigation Ihrer App ausmachen, insbesondere für Erstbenutzer.
NavigationView
macht Dies ist einfacher, wenn Sie den Rahmen für die Navigationsleiste sowie die Möglichkeit zum Aufblasen Ihrer Navigationselemente über eine Menüressource bereitstellen....
Sie können dann beginnen, die Design-Bibliothek mit einer einzigen neuen Abhängigkeit zu verwenden:
compile 'com.android.support:design:22.2.0'
...
Die Design-Bibliothek, AppCompat und die gesamte Android-Support-Bibliothek sind wichtige Werkzeuge für die Bereitstellung der Bausteine, die für den Aufbau einer modernen Android-App erforderlich sind, ohne dass alles von Grund auf neu erstellt werden muss.
Das Implementieren von scrollbaren Navigationsschubladen mit android.support.v4.widget.DrawerLayout und NavigationView könnte sogar noch einfacher sein als unter: Ссылка
In diesem Artikel wird vorgeschlagen, jedes Element der Navigationsleiste Ihrer Anwendung als Menüelement hinzuzufügen. Das ist cool und definitiv ein Weg für die meisten Entwickler. Aber was, wenn Sie bereits eine Navigationsschublade in z. Lineares Layout?
Es scheint, dass Sie Ihr altes gutes Layout leicht scrollbar machen können: Legen Sie es einfach als "app: headerLayout" der NavigationView fest. Keine Änderungen mehr nötig! Also, in einer endgültigen Lösung werden Sie haben:
Ein Layout Ihrer Aktivität, ähnlich dem obigen Blogpost, aber ohne ein Attribut "app: menu=" @ menu / drawer ", z. B .:
%Vor%Und ein Layout für alle Ihre alten Schubladeninhalte in der Datei "drawer_header.xml", migriert ohne irgendwelche Änderungen an dieser scrollbaren Schublade, z. das:
%Vor%Das vollständige Arbeitsbeispiel finden Sie in diesem Aktivitätslayout: Ссылка und dieses Commit, wo ich zu einem scrollbaren Navigationsschublade migrierte: Ссылка
Tags und Links android scroll android-listview navigation-drawer