2013-03-26 7 views
5

Apology, wenn diese zuvor gestellt wurde, aber ich habe versucht, ohne gutes Ergebnis, das Thema googeln. Im Grunde versuche ich, ein Ersatz für ein Galerie-Widget zu finden, das von Google abgelehnt wurde. Bisher habe ich folgende Kandidaten:Alternativen zu android.widget.Gallery (nicht die Galerie-App)

  1. ViewPager. Leider (soweit ich weiß) können Sie immer nur eine Ansicht anzeigen. Ich weiß, dass jemand einen Workaround für dieses hier gepostet hat: https://gist.github.com/devunwired/8cbe094bb7a783e37ad1. Aber ich habe Probleme mit diesem Ansatz. Auf meinem Telefon werden drei Bilder (horizontal) angezeigt. Die meisten linken & die meisten sind statisch, während die mittlere ist scrollbar (wie was ViewPager tun sollte). d. h. am weitesten links & am rechten Bild scrollt nicht, während ich den ViewPager scrolle. Also muss ich diese Lösung ablehnen.

  2. Gridview. Scheint gut, aber es sieht so aus, als ob GridView so entworfen wurde, horizontal horizontal scrollbar zu sein & vertikal. Ich möchte nur eine Zeile und horizontal scrollen. Soweit ich weiß, ist Gallery nicht in diesem Sinne konzipiert.

  3. HorizontalScrollView. Eine andere, die Google in den Javadocs vorgeschlagen hat (abgesehen von ViewPager). Scheint wie ein guter zu benutzen, aber ... wenn ich es richtig verstehe, werden mit diesem Ansatz alle Inhalte im Voraus instanziiert werden. Es gibt keine lazy loading ..

Also ich bin hier verwirrt. Scheint, als wäre die beste Lösung, entweder ViewPager mit nur einer Ansicht gleichzeitig zu verwenden (unerwünscht für das, was ich will) oder bei Gallery zu bleiben.

Was denken die Leute ??

Vielen Dank im Voraus!

+0

http://code.google.com/p/android-ui-utils/downloads/detail?name=CarouselExample.zip. Karussell 3d mit pigrots. – Raghunandan

Antwort

-2

android.support.v4.view.ViewPager ist die endgültige Antwort.

Sie können eine beliebige Anzahl von Seiten anzeigen (View s), es hängt alles von der PagerAdapter. Es hat eine Methode .getPageWidth(position), die für jede Seite aufgerufen wird. Wenn es beispielsweise 0,5 zurückgibt, wird die Seite nur die halbe Breite von ViewPager haben.

Kleben Sie nicht mit Gallery, da es Speicherleck Probleme hat.

+1

Hallo. Ja, ich kenne die Methode getPageWidth. Leider zeigt es die aktuelle Ansicht links, nicht in der Mitte (was ich für ziemlich irreführend halte). Außerdem habe ich einen onPageChangeListener(), um etwas Text für die aktuelle Seite anzuzeigen. Es sieht so aus, als könnte ich die letzte Ansicht nicht aktivieren, wenn alle Ansichten bereits angezeigt werden. Als ein Beispiel, sagen wir, dass der Bildschirm 5 Elemente gleichzeitig anzeigen kann. Wenn der Benutzer zur letzten Seite blättert (zum Beispiel in insgesamt 28 Posten), würde die letzte Seite die Posten 26-28 anzeigen. Aber ich kann die Seite nicht zu Punkt 27 & 28 "ändern", da sie bereits angezeigt werden. Ich hoffe das ergibt Sinn –