2011-11-05 94 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中實現一個拖動手勢,感謝和欣賞傢伙來到​​這裏。