2011-11-05 70 views
0

我想在LinearLayout视图内实现拖动手势,并且其中包含一些组件,如TextView,按钮。现在我使用APL level 11,3.0 SDK根据Android官方文档进行设计。我的代码中包含的方法如下:拖动手势工具3.0 sdk错误

onLongClick()---触发拖动movtion with view.startDrag(clipdate,dragShadow, NULL,0)

ondrag当()---一拖监听器,使用view.layout(左,上,右,下),刷新组件的appreance一直拖

和问题,我遇到是,当我在LinearLayou视图中拖动一个组件时,其他组件消失,并且当我拖动一个组件时,它与其他组件一起消失。

因此,如果有人能够帮助我说出错的方式,或者我可以如何实施拖拽手势以及您的建议。首先,感谢并感谢每一位gus来到这里。

回答

0

我使用的码是低于:

@Override 
public boolean onLongClick(View view) { 
    // TODO Auto-generated method stub 
    boolean result = true; 
    if(DEBUG){ 
     Log.d(TAG, "onLongClick()"); 
    } 
    mLongTouch = true; 
    ClipData.Item item = new ClipData.Item((CharSequence) view.getTag()); 
    ClipData dragData = new ClipData((CharSequence) view.getTag(), mTabDragMimeData, item); 
    SimeTabDragListener.SimeTabDragShadow myShadow = new SimeTabDragListener.SimeTabDragShadow(view); 
    view.startDrag(dragData, myShadow, null, 0); 
    return result; 
} 

@Override 
public boolean onDrag(View view, DragEvent event) { 
    // TODO Auto-generated method stub 
    boolean result = true; 
    int action = event.getAction(); 
    int eventX = (int)event.getX(); 
    int eventY = (int)event.getY(); 
    if(DEBUG){ 
     Log.d(TAG, "onDrag()...event is "+action + ".... X cor is "+event.getX()+"...Y cor is"+event.getY()); 
    } 
    view.layout(eventX - mDownOffsetsX, eventY - mDownOffsetsY, 
      eventX + mDownViewWidth - mDownOffsetsX, eventY + mDownViewHeight - mDownOffsetsY); 
    view.postInvalidate(); 
    return result; 

//返回super.onDragEvent(事件); }

// drag shadows 
public static class SimeTabDragShadow extends View.DragShadowBuilder { 
      private static Drawable shadow; 
      public SimeTabDragShadow(View view) { 
       super(view); 
       if(DEBUG && view instanceof TextView) 
        Log.d(TAG, "drag view is text"); 
       shadow = new ColorDrawable(Color.LTGRAY); 
      } 
      @Override 
      public void onProvideShadowMetrics(Point shadowSize, 
        Point shadowTouchPoint) { 
       // TODO Auto-generated method stub 
       super.onProvideShadowMetrics(shadowSize, shadowTouchPoint); 
      } 
      @Override 
      public void onDrawShadow(Canvas canvas) { 
       // TODO Auto-generated method stub 
       super.onDrawShadow(canvas); 
      } 


     } 

,并包含在LinearLayout中的组件(TextView的)是静态的,通过XML加载的,问题是其他draging一个TextView的TextView的时候会消失,并与他人消失的时候将其删除。

是否有人知道它是如何去这样,或如何在LayoutView中实现一个拖动手势,感谢和欣赏家伙来到​​这里。