2010-11-19 4 views
4

Ein Blick flipper hat 4 Listenansichten. Wenn ich den View-Flipper mithilfe des Gesten-Listeners, der auf View-Flipper implementiert ist, umblättere, funktioniert es einwandfrei. Aber ich kann nicht durch die Listenansicht blättern, da das Berührungsereignis nicht von der Ansichtsflosse zur Listenansicht hinunterrutschen kann. Bitte geben Sie Lösungen an.Listview nicht scrollen innen ansicht flipper in android

private class MyViewFlipper extends ViewFlipper implements OnGestureListener { 
    GestureDetector gestureScanner = new GestureDetector(this); 
    Context context; 

    public MyViewFlipper(Context context) { 
     super(context); 
     this.context=context; 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 
     return gestureScanner.onTouchEvent(event); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     return gestureScanner.onTouchEvent(event); 
    } 

    @Override 
    public boolean onDown(MotionEvent arg0) { 
     return true; 
    } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     try { 
      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) return false; 

      // right to left swipe 
      if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && 
       Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       this.setOutAnimation(AnimationUtils.loadAnimation(context,R.anim.push_left_out)); 
       this.setInAnimation(AnimationUtils.loadAnimation(context,R.anim.push_left_in)); 
       this.showNext(); 
       return true; 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && 
         Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       this.setOutAnimation(AnimationUtils.loadAnimation(context,R.anim.push_right_out)); 
       this.setInAnimation(AnimationUtils.loadAnimation(context,R.anim.push_right_in)); 
       this.showPrevious(); 
       return true; 
      } else if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && 
         Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) { 
       return true; 
      } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && 
         Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) { 
       return true; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
      //Toast.makeText(context, "Error Occurred", Toast.LENGTH_LONG); 
     } 
     return false; 
    } 

    @Override 
    public void onLongPress(MotionEvent e) { 

    } 

    @Override 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
     //I want this event to be handled by list view 
     this.getCurrentView().findViewWithTag("hierarchy_list").dispatchTouchEvent(e1); 

     Log.i(LOG_TAG, "Scroll"); 
     return false; 
    } 

    @Override 
    public void onShowPress(MotionEvent e) { 

    } 

    @Override 
    public boolean onSingleTapUp(MotionEvent e) { 
     //DO something 
     return false; 
    } 
} 
+1

Bitte Code angeben. – Cristian

+0

Hat den Code veröffentlicht. – Anup

Antwort

1
@Override 
public boolean onInterceptTouchEvent(MotionEvent event) { 
    gestureScanner.onTouchEvent(event); 
    return false; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    gestureScanner.onTouchEvent(event); 
    return false; 
} 

Hoffentlich wird das Ereignis weitergegeben werden.

+0

Logischerweise sollte das auch funktionieren. Aber habe das nicht versucht. – Anup

1

Irgendwann habe ich das getan, um das Ereignis tröpfeln zu lassen.

 @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 
     return gestureScanner.onTouchEvent(event); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
// 
     this.dispatchTouchEvent(event); 
     return gestureScanner.onTouchEvent(event); 
    } 
Verwandte Themen