2 ViewPager non scorre in Android 2.3

Sto usando il cassetto di navigazione nella mia applicazione, che contiene alcuni frammenti proprio come nell'image qui sotto.

immettere qui la descrizione dell'immagine

  • AdMob AdView e ViewPager?
  • KitKat: Come guidare APDUs alla SIM
  • Presentare il contenuto html come "pagine" dinamiche
  • La gestione dell'attività dimostrativa dell'attività Lifecycle ritorna all'originale A se avviare A
  • DoubleTap in android
  • Come eseguire applicazioni esterne, scaricate e non ancora installate su Android?
  • Ogni frammento contiene un altro ViewPager che è un ImageSlider, e sotto che è una listview e in alto sto utilizzando SwipeRefreshLayout. Il mio problema è che il dispositivo di scorrimento delle immagini funziona bene sui dispositivi che dispongono di versione Android 3.0 o superiore ma lo scorrimento a sinistra oa destra non funziona sui dispositivi 2.3 e inferiore, invece invoca lo spostamento di Parent ViewPager che naviga il frammento. Sto usando la libreria di versione 4 per questo scopo per supportre i dispositivi inferiori a 3.0. Tutte le funzioni funzionano abbastanza bene su 2.3 dispositivi tranne quello. Ho scoperto, ma non ho trovato alcun aiuto da nessuna parte. Quindi per farlo scorrere che cosa devo fare per questo, qualsiasi idea / aiuto sarà altamente apprezzato.

  • Come passare ArrayList <HashMap <String, String> da un'attività all'altra
  • Android: connessione di mysql (XAMPP) all'applicazione android per l'emulatore
  • API Google Places per Android - PlacePikcer senza possibilità di ricerca
  • Elenco di stile di Gmail
  • Come creare i file OBB utilizzando l'Android migliore strumento
  • Android: utilizzando SharedPreferences in una libreria
  • 2 Solutions collect form web for “2 ViewPager non scorre in Android 2.3”

    È ansible utilizzare questo ViewPager come ViewPager genitore. Ciò consente al bambino ViewPager di scorrere.

     public class CustomViewPager extends ViewPager { public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { try { //Handle the issue only in lower versions of android if (v != this && v instanceof ViewPager && CJRAppCommonUtility.getOSVersion() < android.os.Build.VERSION_CODES.HONEYCOMB) { ViewPager viewPager = (ViewPager) v; int currentPage = viewPager.getCurrentItem(); int size = viewPager.getAdapter().getCount(); //if ViewPager has reached its end and if user tries to swipe left allow the parent to scroll if (currentPage == (size - 1) && dx < 0) { return false; } //if ViewPager has reached its start and if user tries to swipe right allow the parent to scroll else if (currentPage == 0 && dx > 0) { return false; } //Allow the child to scroll hence blocking parent scroll else { return true; } } return super.canScroll(v, checkV, dx, x, y); } catch (Exception e) { e.printStackTrace(); return false; } } } 

    Il sito degli sviluppatori Android ha una bella spiegazione sulla gestione degli events di contatto in un Viewgroup . Puoi riferirlo qui: http://developer.android.com/training/gestures/viewgroup.html

    Spero che sia d'aiuto!!

    Nella versione precedente di Android demandDisallowInterceptTouchEvent non funziona così grande. La soluzione qui è quella di estendere la visualizzazione di pager e sovrascrivere l'onInterceptTouchEvent e memorizzare un elenco di bambini scrollabili. Quindi, quando si è chiamatoInterceptTouchEvent, è ansible eseguire iterazioni nell'elenco dei bambini scrollabili, get il loro colpo diretto e vedere se l'evento di contatto è all'interno del rientro. Se è vero, puoi tornare falso per non gestirlo e lasciare che il bambino lo prenda.

    Qualcosa come questo:

     @Override public boolean onInterceptTouchEvent(MotionEvent ev) { for (View view : scrollableChildren) { // get the hit rectangle for the view Rect rect = new Rect(); view.getHitRect(rect); // check to see if the click was inside this child if (rect.contains((int) ev.getX(), (int) ev.getY())) { return false; } } return super.onInterceptTouchEvent(ev); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.