2013-02-18 37 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