2013-02-18 71 views
1

這裏是佈局 -
滾動視圖和OnGestureListener

<ScrollView> 

<RelativeLayout> 

    <Layout1> 
    </Layout1> 

    <Layout2> 
    </Layout2> 

    <Layout3> 
    </Layout3> 

    <Layout4> 
    </Layout4> 

    <Layout5> 
    </Layout5> 

    <Layout6> 
    </Layout6> 
</RelativeLayout> 
</ScrollView> 

我在活動實施onGestureListener
我必須檢測各個佈局(佈局1到佈局6)上的滑動操作 - 向上滑動並向下滑動。由於佈局處於滾動視圖滑動操作(啓用)未被檢測到。
如何爲滾動視圖的子元素檢測onfling
任何幫助將不勝感激。

編輯:添加一些代碼 -

這裏是活動 -

public class ServiceScreen extends Activity implements OnFocusChangeListener, 
    OnTouchListener, OnGestureListener .... 

佈局聽衆 -

RelativeLayout rlCarBrand; 
    .... 

    rlCarBrand.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 
      return gestureScanner.onTouchEvent(event); 
     } 
    }); 

重寫的方法 -

@Override 
public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2, 
     float arg3) { 
    // TODO Auto-generated method stub 
    Log.i("LogMessage", "On Fling"); 
    return true; 
} 


@Override 
public boolean onDown(MotionEvent arg0) { 
    // TODO Auto-generated method stub 
    return true; 
} 

回答

1

創建一個擴展ScrollView的CustomScrollView類。

有了這個,我們可以更改滾動查看的滾動啓用屬性。

public class CustomScrollView extends ScrollView { 

    boolean bScrollable = false; 

    public CustomScrollView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 


    public void setScrollingEnabled(boolean enabled) { 
     bScrollable = enabled; 
    } 

    public boolean isScrollable() { 
     return bScrollable; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent ev) { 
     switch (ev.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      // if we can scroll pass the event to the superclass 
      if (bScrollable) { 
       return super.onTouchEvent(ev); 
      } 

      // only continue to handle the touch event if scrolling enabled 
      return bScrollable; // mScrollable is always false at this point 

     default: 
      return super.onTouchEvent(ev); 
     } 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
     // Don't do anything with intercepted touch events if 
     // we are not scrollable 
     if (!bScrollable) { 
      return false; 
     } else { 
      return super.onInterceptTouchEvent(ev); 
     } 
    } 

} 
+0

是的,你給了一個指針+1。 – Anukool 2013-03-29 17:13:44

+0

感謝您的支持。但是這個社區只能通過指點來工作。確切/具體的答案只能從中提取。歡呼聲有美好的一天。 – Javanator 2013-03-29 17:17:43

+0

感謝您的幫助....反正。 – Anukool 2013-03-29 17:18:21

1

嘗試延長滾動型類,並且覆蓋這些onDown和onFling。 像這樣

@Override 
public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2, 
    float arg3) { 
    super.onFling(arg0,arg1,arg2,arg3); 
    return false; 
} 

看看,如果這個工程。

指向從使用手勢事件的滾動視圖方法返回false。 谷歌它更多。我不確定。

+0

+1。我已經實施了你的建議。在答案中張貼它。 – Anukool 2013-03-29 05:34:16