Das Problem bei diesem Beispiel ist, dass ich nicht herausfinden kann, wie ich meine Startposition festlegen soll, die Standardstartposition ist 0. Grundsätzlich möchte ich nicht kontrollieren können, ob links oder rechts eine verfügbare Ansicht vorhanden ist.
Gibt es eine Möglichkeit, die aktuelle Position des Kontrollzentrums anzuzeigen? gibt es einen besseren Weg, es zu tun? ist es möglich, es kreisförmig zu machen?
Überprüfen Sie dies unter stackoverflow.com/a/53031553/4797289
– Rasoul Miri
28. Oktober 2018 um 12:36 Uhr
Ich habe einen Weg gefunden, seine Position festzulegen, was außerhalb der Klasse geschieht:
und es kann begrenzt werden, indem ich die Anzahl der Gegenstände berechne, die ich hineinpassen möchte
beachten Sie, dass wenn awesomeAdapter von einem Cursor/LoaderManager unterstützt wird, müssen Sie vorsichtig sein, wann setCurrentItem wird aufgerufen, um zu vermeiden, den Fokus zu stehlen (zu spät) oder die Seite überhaupt nicht zu verschieben (zu früh) – siehe dies
– Rymo
12. Juni 2014 um 14:46 Uhr
hat bei mir nicht funktioniert, weil meine anderen Fragmente zu diesem Zeitpunkt noch nicht fertig sind und ich eine Ausnahme habe, da meine App versucht hat, eine Variable aus der zu verwenden currentPosition Fragment, das noch nicht erstellt wurde
– Zwi
18. April 2016 um 19:04 Uhr
Funktioniert perfekt. Das Einstellen des View-Pagers, wenn das Fragment fertig ist, funktioniert gut. Versuchen Sie dies, wenn das Fragment fertig ist und Sie die aktuelle Position zur Verfügung haben. Danke @kirill
– Naeem Ibrahim
25. Oktober 2016 um 13:04 Uhr
Gibt es eine Möglichkeit, ViewPager von der Ende? Ich meine wie in RecyclerViewwenn Sie einrichten new LinearLayoutManager(..., inverse=true) . Was ich will, ist: ViewPager springt sofort zum letzten Element, ohne dass mittendrin Fragmente hochgehen
– Murmeln
10. Februar 2017 um 11:54 Uhr
@murt es ist ziemlich spät, aber falls jemand das gleiche Problem hat, vorbei false würde dem Benutzer den Übergang nicht zeigen, der passiert: viewPager.setCurrentItem(newPosition, false);
– Yousef Gamal
5. Oktober 2019 um 1:17 Uhr
Ich habe festgestellt, dass der Adapter seine Fragmente wiederverwendet, wenn Sie die Aktivität (Ausrichtungsänderung) mit ViewPager mit FragmentStatePagerAdapter neu erstellen. Der Weg, es zu stoppen ist:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
if (viewPager != null) {
// before screen rotation it's better to detach pagerAdapter from the ViewPager, so
// pagerAdapter can remove all old fragments, so they're not reused after rotation.
viewPager.setAdapter(null);
}
super.onSaveInstanceState(savedInstanceState);
}
aber nach der Aktivitätserneuerung öffnet ViewPager immer zuerst Seite 0 und setCurrentItem (CurrentPosition); funktioniert nicht. Fix für das Wechseln der Seite nach Verzögerung:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
viewPager.setCurrentItem(newPosition);
}
}, 100);
Die Verzögerung wird tatsächlich nach a benötigt recreate() call! 🙂
– anni
13. Januar 2018 um 15:16 Uhr
Heli
Um mit dem letzten Fragment zu beginnen, habe ich Folgendes getan:
PagerAdapter pagerAdapter = new PagerAdapter();
viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(pagerAdapter.getCount() - 1);
Ich bin auf ein Problem gestoßen, bei dem, wenn ich das aktuelle Element einstelle, bevor ich den Adapter einstelle, das erste Element, das ich zurückbekomme, immer das an Position 0 ist.
Ich habe ein Array mit einer Größe von mehr als 1000 und im dynamischen Viewpager stand ich beim ersten Laden vor Leftswipe. Der folgende Code löste dies und führte zu einem reibungslosen Scrollen:
Ich verwende 3 Fragmente und beim Starten meiner App das zweite (Mitte)-Fragment wird standardmäßig angezeigt. Ich verwende nur die onResume-Funktion und alles funktioniert hervorragend.
Verwenden viewPager.setCurrentItem(newPosition); zeigt dem Benutzer den Übergang von der Startseite zur newPositionum das zu verhindern und das zu zeigen newPosition direkt, als wäre es der Ausgangspunkt, fügte ich hinzu false zum zweiten Parameter etwa so:
int newPosition = pages.size()-1; // Get last page position
viewPager.setCurrentItem(newPosition, false); // 2nd parameter (false) stands for "smoothScroll"
12769300cookie-checkStartposition des PagerAdaptersyes
Überprüfen Sie dies unter stackoverflow.com/a/53031553/4797289
– Rasoul Miri
28. Oktober 2018 um 12:36 Uhr