2012-10-11 110 views
3

我一直在写一个简单的应用程序,使用拖动&拖放,除非有一点细节,否则工作正常。当我第一次握住包含拖动动作的ImageView时,DragShadowBuilder会将迷你视图放在错误的地方。最奇怪的部分是后来,它修复了自己,并且操作继续完美。 这是表示行为的图像(我手里拿的联系人应用程序图标,看看那里的缩略图)拖放移位

displaced

这是我的代码使用

 View v = inflater.inflate(R.layout.recent_entry, null); 
     ImageView img = (ImageView)v.findViewById(R.id.recent_icon); 

     img.setOnTouchListener(new View.OnTouchListener(){ 

      @Override 
      public boolean onTouch(View view, MotionEvent me) { 
       if (me.getAction() == MotionEvent.ACTION_DOWN){ 
        DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 
        view.startDrag(null, shadowBuilder, null, 0); 
        mLaunchIntent = holder.getLaunchIntent(); 
        mSelectedItem = view; 
        mRecentDetails.setVisibility(View.GONE); 
       } 
       return true; 
      } 
     });   

回答

0

纯属猜测,但是您是否应该不使用拖动源的位置,而不是使用包含拖动内容的视图?

+0

您能详细解释一下您的答案吗?我不是英语母语的人,并且不理解它。你的意思是我应该将拖放处理程序添加到imageview,而不是它的父级? –

+0

查看更多文档,看起来您必须设置拖动图像的触摸位置。这将找到相对于鼠标位置的拖动图像。看到这个:http://developer.android.com/guide/topics/ui/drag-drop.html – Zagrev