2016-11-18 4 views
-1

Was ich erreichen möchte: Habe einen ViewPager mit TabLayout, wo jedes Tab ein neues Fragment enthält, das horizontal ein RecyclerView Layout hat und von einem FragmentPagerAdapter verwaltet wird.ViewPager ohne Snapping

Was ich kämpfen mit: Das Standardverhalten ist, dass, wenn Sie Ende der Liste auf eine der Registerkarten erhalten, schaltet Tabs und rastet (Rastmittel, wenn Sie mehr als 50% des Ansichtsfensters ziehen, springt in beide Richtungen). Ich möchte, dass es frei fließt und nicht reißt. So ähnlich wie es bei iOS standardmäßig passiert.

Wie soll ich dieses Problem (vorzugsweise ohne weitere Bibliotheken) nähern:

habe ich für diese Einrichtung durch die folgenden zwei Codepfad Führung inspiriert?

+0

Es klingt also so, als ob Sie nicht das Verhalten des Swipe-to-Change-Tabs wünschen, das Teil von 'ViewPager' ist. Ist das korrekt? Verwenden Sie in diesem Fall keinen 'ViewPager', verwenden Sie einfach die Tabs, um die verschiedenen Fragmente in einen festen Container zu laden. –

+0

@krislarson Ich möchte das swipe-to-change-tabs-Verhalten, ich möchte es nicht automatisch einrasten lassen, sondern flüssig scrollen, zum Beispiel, wie die Emoji-Tastatur auf iOS funktioniert (ich möchte ein ähnliches Verhalten) – anthonymonori

Antwort

1

Was ich tun würde, ist HorizontalScrollView anstelle von ViewPager zu verwenden. Der einzige Nachteil besteht darin, dass der Ansichtspager die Lebenszyklusereignisse in Fragmenten sendet, während Sie zwischen ihnen blättern, während Sie sie für HorizontalScrollView zunächst hinzufügen müssen und sie dann fortlaufend aktiv sind, sofern Sie dies nicht manuell ändern. Außerdem haben Sie möglicherweise die Option, die Fragmente nicht zu verwenden und einfache Ansichten zu verwenden, je nachdem, wofür Sie die Fragmente verwenden.

Ich würde auf jeden Fall nicht die Touch-Ereignisse außer Kraft für die ViewPager, weil es einige Bereinigung macht, wenn es um die Bewegung UP erkennt, so dass nur schluckt es keine richtig was zu tun ist.

+0

Es begann als 'HorizontalScrollView' mit einem' RecyclerView' zum Rendern der Elemente mit einem 'TabLayout', aber wir haben unterschiedliche Größe der Elemente pro" Tab ", daher ist es für jedes der beiden Teile ideal, sie in' Fragment' aufzuteilen Registerkarten haben ihre eigene 'RecyclerView'. Das hat mich zum "ViewPager" -Ansatz getrieben, aber der einzige Roadblock ist der Snap-Effekt. Willst du damit sagen, dass das von Entwurf ist und kein "netter" und vorgeschlagener Weg darum herum und mein einziger Ansatz ist immer noch das 'HorizontalScrollView'? Danke für die erste Antwort! – anthonymonori

+0

@anthonymonori Sie brauchen keinen ViewPager, um die Fragmente zu verwenden und umgekehrt. Leider können Sie das Fangen in ViewPager nicht anhand des Quellcodes deaktivieren, daher müssen Sie auf jeden Fall ein anderes Widget verwenden. – Malcolm

+0

Danke für die Rückmeldung! – anthonymonori

Verwandte Themen