Ich habe eine, ViewPager
die a instanziiert View
. Ich möchte sowohl das Scrollen des Viewpagers als auch die untergeordneten Schaltflächen für einen Moment deaktivieren, während ein Suchergebnis zur Ansicht zurückgegeben wird. Ich habe angerufen, viewPager.setEnabled(false)
aber das deaktiviert es nicht.
Hat jemand irgendwelche Ideen?
android
android-viewpager
mAndroid
quelle
quelle
Antworten:
Eine einfache Lösung besteht darin, eine eigene Unterklasse zu erstellen
ViewPager
, die einprivate boolean
Flag hatisPagingEnabled
. Überschreiben Sie dann die MethodenonTouchEvent
undonInterceptTouchEvent
. WennisPagingEnabled
gleich true, rufen Siesuper
andernfalls die Methode aufreturn
.Layout.XML
Ersetzen Sie dann in Ihrer Datei alle<com.android.support.V4.ViewPager>
Tags durch<com.yourpackage.CustomViewPager>
Tags.Dieser Code wurde aus diesem Blog-Beitrag angepasst .
quelle
Es gibt eine einfache Lösung für dieses Problem:
Wenn Sie den Viewpager-Bildlauf deaktivieren möchten, gehen Sie wie folgt vor:
Und wenn Sie es dann wieder aktivieren möchten:
Das wird den Trick machen.
quelle
Hier ist meine leichte Variante von Slaytons Antwort:
Mit meinem Code können Sie das Paging mit deaktivieren
setEnable()
.quelle
onInterceptTouchEvent()
wird verhindert, dass untergeordnete Ansichten Eingaben erhalten. In den meisten Fällen ist dies nicht das beabsichtigte Verhalten.Ich habe eine einfache Lösung gefunden.
quelle
Ich schlage einen anderen Weg vor, um dieses Problem zu lösen. Die Idee ist, Ihren viewPager mit einer scrollView zu versehen, sodass Ihr viewPager auch nicht scrollbar ist, wenn diese scrollView nicht scrollbar ist.
Hier ist mein XML-Layout:
Kein Code notwendig.
Funktioniert gut für mich.
quelle
Swipe deaktivieren
Swipe aktivieren
quelle
Die beste Lösung, die für mich funktioniert hat, ist:
Danach wird der Bildlauf durch Berühren deaktiviert und Sie können weiterhin die
setCurrentItem
Methode zum Wechseln der Seite verwenden.quelle
canScrollHorizontally()
Methode hat im aktuellen Szenario keine Auswirkung. Es wird nicht einmal aufgerufen, wenn ein Wischen stattfindet.Hier ist eine Antwort in Kotlin und androidX
quelle
Wie wäre es damit:
Ich habe
CustomViewPager
die scrollTo-Methode verwendet und als nächstes überschrieben.
Ich habe die Bewegung überprüft, wenn ich viele kleine Wischvorgänge ausgeführt habe. Sie wird nicht zu anderen Seiten gescrollt.
quelle
View.scrollTo(int x, int y)
löste dieses Problem für mich. Vielen DankIn meinem Fall mit ViewPager 2 alpha 2 funktioniert das folgende Snippet
viewPager.isUserInputEnabled = false
Weitere Änderungen in viewpager2 1.0.0-alpha02 finden Sie hier
Außerdem wurden einige Änderungen an der neuesten Version von ViewPager 2 alpha 4 vorgenommen
Weitere Änderungen in viewpager2 # 1.0.0-alpha04 finden Sie hier
quelle
Die neue Klasse ViewPager2 von androidx ermöglicht das Deaktivieren des Bildlaufs mit der Methode setUserInputEnabled (false).
quelle
Die Antwort von Slayton funktioniert gut. Wenn Sie aufhören möchten, wie ein Affe zu wischen, können Sie einen OnPageChangeListener mit überschreiben
Sie können also nur nebeneinander wischen
quelle
setPagingEnabled()
Methode bewirkt. Bitte geben Sie den vollständigen Code an.Ersetzen Sie dann in Ihrer Layout.XML-Datei alle --- com.android.support.V4.ViewPager --- -Tags durch --- com.yourpackage.NonSwipeableViewPager --- -Tags.
quelle