2012-08-27 17 views
6

Kann jemand die Empfindlichkeit von ViewPager ändern?Wie ändere ich die Empfindlichkeit des Viewpagers?

Momentan verwende ich einen ViewPager von der Support-Bibliothek von Android v4, um meinen eigenen Fotobetrachter zu implementieren.

Der standardmäßige ViewPager ist jedoch zu empfindlich, wenn mein Finger auf dem Bildschirm landet und sich um einen sehr kurzen Abstand (vielleicht nur 0,5 cm) bewegt. Dann wird ViewPager umgeschaltet, um zur nächsten/vorherigen Fotoansicht zu blättern.

Gibt es eine Möglichkeit, das Standardverhalten von ViewPager zu überschreiben, um die Empfindlichkeit zu verringern?

Dank jeder Antwort.

Antwort

4

Ich habe ViewPager.java aus src der Kompatibilitätsbibliothek ausgecheckt und scheint es gibt keine Möglichkeit, es durch XML oder einige Setter zu tun. ViewPager hat Code wie folgt aus:

final float density = context.getResources().getDisplayMetrics().density; 
mFlingDistance = (int) (MIN_DISTANCE_FOR_FLING * density); 
mCloseEnough = (int) (CLOSE_ENOUGH * density); 
mDefaultGutterSize = (int) (DEFAULT_GUTTER_SIZE * density); 

Wie Sie sehen können, verwendet er es für die Bestimmung der fling Abstand internen Konstanten ist und etc.

Gute Nachrichten sind: Sie ViewPager kopieren können (hier Lizenz davon sollte berücksichtigt werden) zu Deinem Code und erweitere ihn zB um den Abstand zum xml-Attribut zu erhalten.

+0

gut, ich werde versuchen, es zu tun, dank Ihrer Antwort. – Raymond

+0

Es ist hacky, aber Sie könnten dies auch mit Reflektion einstellen. – Ljdawson

+0

@Raymond Hast du eine Lösung dafür bekommen? Ich brauche Scroll für ViewPager wie Standard ScrollView. – Noundla

2

Sie können das mFlingDistance Feld wie folgt reflektieren:

Field mFlingDistance; 
mFlingDistance = ViewPager.class.getDeclaredField("mFlingDistance"); 
mFlingDistance.setAccessible(true); 

// Set custom value: 
mFlingDistance.set(mPager, 30); 
Verwandte Themen