ViewDragHelper自定义ViewGroup中shouldInterceptTouchEvent一直返回false
最近再项目里使用ViewDragHelper自定义了一个ViewGroup,但是在自定义ViewGroup中的view却无法被拖动,ViewGroup中重写的onInterceptTouchEvent中调用的shouldInterceptTouchEvent也一直返回false,参照着很多博客和教程重新把ViewGroup写了很多次,没有成功过,把onInterceptTouchEvent返回值直接改为true布局中的view就可以拖动,请问怎么样才能正常使用ViewDragHelper呢?
自定义ViewGroup:
public class DragLayout extends LinearLayout { private ViewDragHelper dragHelper; public DragLayout(Context context) { super(context); init(); } public DragLayout(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } public DragLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } public void init(){ dragHelper=ViewDragHelper.create(this,1.0f,new ViewDragCallback()); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { Log.d("debuginfo","onInterceptTouchEvent返回值为:"+dragHelper.shouldInterceptTouchEvent(ev)); Log.d("debuginfo","onInterceptTouchEvent中的ev包含:"+ev.toString()); return true; } @Override public boolean onTouchEvent(MotionEvent event) { dragHelper.processTouchEvent(event); return true; } class ViewDragCallback extends ViewDragHelper.Callback{ @Override public boolean tryCaptureView(View child, int pointerId) { Log.d("debuginfo","tryCaptureView中childView的ID为:"+child.getId()); Log.d("debuginfo","tryCaptureView中pointerId为:"+pointerId); return true; } @Override public int clampViewPositionHorizontal(View child, int left, int dx) { Log.d("debuginfo","clampViewPositionHorizontal方法返回的left值为:"+left); return left; } @Override public int clampViewPositionVertical(View child, int top, int dy) { return top; } }}
布局文件:
有没有人能帮忙解决一下,感激不尽 |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|