Die beste Methode zum Implementieren einer Scroll-Navigationsleiste

8

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?

Aktualisierung:

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?

    
Farbod Salamat-Zadeh 06.05.2015, 18:14
quelle

3 Antworten

4
  

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:

zu speichern %Vor%

Ich glaube, der Grund, warum sie ein LinearLayout verwenden und alle Elemente programmatisch aufblasen, ist die einfache Verwendung von Trennelementen:

%Vor%

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.

    
Simas 17.05.2015, 17:23
quelle
0

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.

    
Farbod Salamat-Zadeh 06.06.2015 01:54
quelle
0

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: Ссылка

    
yvolk 28.08.2016 12:00
quelle