Ich bin es wirklich leid, nach einer Lösung für vertikale und horizontale Bildlaufansichten zu suchen.
Ich habe gelesen, dass es im Framework keine Ansichten / Layouts gibt, die diese Funktion implementieren, aber ich brauche so etwas:
Ich muss ein Layout in einem anderen definieren, das untergeordnete Layout muss das vertikale / horizontale Scrollen zum Verschieben implementieren.
Anfangs wurde ein Code implementiert, der das Layout Pixel für Pixel verschob, aber ich denke, das ist nicht der richtige Weg. Ich habe es mit ScrollView und Horizontal ScrollView versucht, aber nichts funktioniert so, wie ich es möchte, da es nur vertikales oder horizontales Scrollen implementiert.
Canvas ist nicht meine Lösung, da ich Listener an untergeordnete Elemente anhängen muss.
Was kann ich tun?
quelle
Antworten:
Mischen Sie einige der obigen Vorschläge und erhalten Sie eine gute Lösung:
Benutzerdefinierte ScrollView:
Benutzerdefinierte HorizontalScrollView:
die ScrollableImageActivity:
das Layout:
quelle
LinearLayout
denke ich)Da dies das erste Suchergebnis in Google für "Android vertikal + horizontal ScrollView" zu sein scheint, dachte ich, ich sollte dies hier hinzufügen. Matt Clark hat eine benutzerdefinierte Ansicht erstellt, die auf der Android-Quelle basiert, und sie scheint perfekt zu funktionieren: Two Dimensional ScrollView
Beachten Sie, dass die Klasse auf dieser Seite einen Fehler beim Berechnen der horizontalen Breite der Ansicht aufweist. Ein Fix von Manuel Hilty ist in den Kommentaren:
Bearbeiten: Der Link funktioniert nicht mehr, aber hier ist ein Link zu einer alten Version des Blogposts .
quelle
fillViewport
undonMeasure
genau wie sie. Ich habe auch die beiden ersten Konstruktoren geändert mit:this( context, null );
undthis(context, attrs, R.attr.scrollViewStyle);
. Damit kann ich die Bildlaufleiste mitsetVerticalScrollBarEnabled
undsetHorizontalScrollBarEnabled
im Code verwenden.Ich habe eine bessere Lösung gefunden.
XML: (design.xml)
Java Code:
Das funktioniert !!!
Wenn Sie ein anderes Layout oder Steuerelement laden möchten, ist die Struktur dieselbe.
quelle
Ich benutze es und funktioniert gut:
Der Quelllink ist hier: Android-Spa
quelle
ImageView
als scrollbaren Inhalt funktioniert, aber möglicherweise für beliebige andere Inhalte funktioniert oder nicht, und dass Google glaubt, dass es Probleme mit Ihrem Ansatz geben wird. Die Meinung von Google ist auch im Hinblick auf die zukünftige Entwicklung von Bedeutung. Möglicherweise versuchen sie nicht, sicherzustellen, dass Ihr Ansatz auf lange Sicht funktioniert, wenn sie den Nutzern raten, ihn überhaupt nicht zu verwenden.Meine Lösung basiert auf der Antwort von Mahdi Hijazi , jedoch ohne benutzerdefinierte Ansichten:
Layout:
Code (onCreate / onCreateView):
Sie können die Reihenfolge der Bildlaufansichten ändern. Ändern Sie einfach ihre Reihenfolge im Layout und im Code. Und natürlich setzen Sie anstelle von WateverViewYouWant das Layout / die Ansichten ein, mit denen Sie in beide Richtungen scrollen möchten.
quelle
Option 1: Sie können ein neues UI-Design entwickeln, das kein gleichzeitiges horizontales und vertikales Scrollen erfordert.
Option 2: Sie können den Quellcode für
ScrollView
und erhaltenHorizontalScrollView
, erfahren, wie das Android-Kernteam diese implementiert hat, und Ihre eigeneBiDirectionalScrollView
Implementierung erstellen .Option 3: Sie können die Abhängigkeiten beseitigen, für die Sie das Widget-System verwenden müssen, und direkt auf die Leinwand zeichnen.
Option 4: Wenn Sie auf eine Open-Source-Anwendung stoßen, die das zu implementieren scheint, wonach Sie suchen, schauen Sie nach, wie sie es getan haben.
quelle
Versuche dies
quelle
Da der Link "Zweidimensionale Bildlaufansicht" nicht mehr verfügbar ist, konnte ich ihn nicht erhalten und habe meine eigene Komponente erstellt. Es handhabt Schleudern und funktioniert richtig für mich. Die einzige Einschränkung besteht darin, dass wrap_content für diese Komponente möglicherweise nicht ordnungsgemäß funktioniert.
https://gist.github.com/androidseb/9902093
quelle
Ich habe eine Lösung für Ihr Problem. Sie können den ScrollView-Code überprüfen, der nur vertikales Scrollen verarbeitet, den horizontalen ignoriert und diesen ändert. Ich wollte eine Ansicht wie eine Webansicht, also modifizierte ich ScrollView und es funktionierte gut für mich. Dies entspricht jedoch möglicherweise nicht Ihren Anforderungen.
Lassen Sie mich wissen, auf welche Art von Benutzeroberfläche Sie abzielen.
Grüße,
Ravi Pandit
quelle
Wenn Sie mit dem Code spielen, können Sie eine HorizontalScrollView in eine ScrollView einfügen. Dadurch können Sie die beiden Bildlaufmethoden in derselben Ansicht haben.
Quelle : http://androiddevblog.blogspot.com/2009/12/creating-two-dimensions-scroll-view.html
Ich hoffe das könnte dir helfen.
quelle
Auf diese Weise habe ich versucht, dies zu beheben
Fügen Sie Ihr gesamtes XML-Layout ein
Ich habe dies in diesem Link erklärt. Vertical recyclerView und Horizontal recyclerview scrollen zusammen
quelle