2013-10-03 116 views
1

我有一個LinearLayout出現在屏幕中間和上面(zorder)我的列表視圖。此Linearlayout由幾個按鈕組成。使視圖不會滾動事件,但只是觸摸事件

我希望當我在這個LinearLayout上滾動時,它不捕獲事件並讓它進入下面的列表視圖。當點擊按鈕時,他們得到onClick事件。

我希望這是明確的...

+0

換句話說......問題是我有一個列表視圖上方的粘滯視圖。這個粘滯的視圖由帶有整個粘滯視圖的按鈕組成。你有想法設法將滾動傳遞到列表視圖,並點擊按鈕到按鈕..? – gbero

回答

0

有關信息,這是我如何解決我的問題。希望代碼是清晰的...

private Point p1; 
private Point p2; 
private int mTouchSlop; 

public StickyView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    ViewConfiguration vc = ViewConfiguration.get(context); 
    mTouchSlop = vc.getScaledTouchSlop(); 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 
    if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) { 
     listView.onTouchEvent(ev); 
     return super.onInterceptTouchEvent(ev); 
    } else if (ev.getAction() == MotionEvent.ACTION_MOVE) { 
     p2 = new Point(0, (int) ev.getY()); 
     double distance = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2)); 
     if (Math.abs(distance)> mTouchSlop) { 
      listView.onTouchEvent(ev); 
      return super.onInterceptTouchEvent(ev); 
     } 
     p1 = p2; 
    } else if (ev.getAction() == MotionEvent.ACTION_DOWN) { 
     p1 = new Point(0, (int) ev.getY()); 
     listView.onTouchEvent(ev); 
    } 
    return super.onInterceptTouchEvent(ev); 
}