So fügen Sie einen Bildlauf für eine benutzerdefinierte Ansicht in Android hinzu

9

Ich habe gerade angefangen, eine benutzerdefinierte Ansicht in Android zu schreiben (zum ersten Mal) und ich habe festgestellt, dass ich eine Scroll-Funktion implementieren muss.

Die benutzerdefinierte Ansicht verwendet auch eine Kopfzeile, die etwas Text enthält (der fest bleiben sollte und nicht scrollt).

Ich habe die Dokumentation zu GestureDetector.SimpleOnGestureListener und Scroller . Ich lese auch die Dokumentation über Animieren einer Scroll-Geste , aber ich fand die Beispiele schwierig zu verstehen. Ich habe mir auch andere Fragen zu Stack Overflow angeschaut, die ein wenig geholfen haben.

Verwenden, was ich aus der Dokumentation mit der Stack Overflow-Antwort verstanden habe eine Referenz, um mich zu führen, habe ich meine benutzerdefinierte Ansicht hinzugefügt:

Variablen und Felder:

%Vor%

Initialisierung von mScroller :

%Vor%

Material in onDraw() :

%Vor%

Material in onTouchEvent() :

%Vor%

Das Ergebnis dieser Ergänzungen ist eine benutzerdefinierte Ansicht, die vertikal (und nicht horizontal) scrollen kann, jedoch gibt es ein paar Probleme:

  1. Ich kann weiter scrollen, was gezeichnet wird
  2. Es gibt keinen Kantenglüheffekt, wenn ich das Ende der benutzerdefinierten Ansicht erreiche (ich meine wie ein RecyclerView oder ScrollView )
  3. Die gesamte benutzerdefinierte Ansicht scrollt im Gegensatz zu nur einem bestimmten Teil davon
  4. Ich verstehe nicht ganz, was vor sich geht

Kann jemand erklären, wie das Scrollen in einer benutzerdefinierten Ansicht funktioniert und wie man es mit diesen Funktionen richtig implementiert?

    
Farbod Salamat-Zadeh 03.09.2016, 14:48
quelle

1 Antwort

4

Darf ich ein einfaches Layout anbieten, das eine feste Kopfzeile und vertikal scrollenden Inhalt hat, der so klingt, als würde er tun, was Sie wollen und keine komplexe Programmierung benötigen? Es kann Sie davor bewahren, auf lange Sicht Stunden der Forschung und Programmierung zu verbringen:

%Vor%

Bei Verwendung dieses Layouts würden Sie den Header " FrameLayout with ID" mit Ihrer festen Kopfzeile ersetzen oder einfügen. Sie würden dann Ihren Scolling-Inhalt innerhalb der FrameLayout mit der ID "scrolling_content" ablegen. Das NestedScrollingView würde sich direkt unter Ihrem festen Header befinden und Ihnen automatisch das gewünschte Scroll-Verhalten ohne weiteren Code geben.

    
happydude 04.09.2016 06:40
quelle