2017-07-14 64 views
0

我在Android拖放中遇到了这个问题。我已经阅读了文档和多个问题/答案在这里stackoverflow。
问题是:
我有3个ImageView,我可以在另一个3 ImageView中移动,但是当我开始拖动其中一个ImageView时,我可以将它放在一个ImageView区域内。Android将ImageView拖放到另一个ImageView中

Here the code!。基本上我会看到活动只有dropViewArancio区域,即使我拖动其他ImageView。 我想要它的所有3区域活动,我可以放弃其中一个3 ImageView。 感谢您的支持!

回答

0

所以,我已经解决了我的问题,继这个tutorial。无论如何,我的愿望解决方案是类似this,这是一个教程和以前的链接混合的完美方式。感谢所有的帮助。

0

一个ImageView里面不能再包含另一个View,只有派生自ViewGroup的类才可以。然后,您可以将ImageView移动到另一个之上(取决于Z顺序),但不在里面。

这里是一个如何使用onTouch移动RelativeLayout中包含的所有视图的工作示例。我认为onDrag事件更适用于拖放数据项目,而不是移动视图。希望它会帮助

public class MainActivity extends AppCompatActivity implements View.OnTouchListener { 
    private RelativeLayout mRelLay; 
    private float mInitialX, mInitialY; 
    private int mInitialLeft, mInitialTop; 
    private View mMovingView = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mRelLay = (RelativeLayout) findViewById(R.id.relativeLayout); 

     for (int i = 0; i < mRelLay.getChildCount(); i++) 
      mRelLay.getChildAt(i).setOnTouchListener(this); 
    } 

    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     RelativeLayout.LayoutParams mLayoutParams; 

     switch (motionEvent.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       mMovingView = view; 
       mLayoutParams = (RelativeLayout.LayoutParams) mMovingView.getLayoutParams(); 
       mInitialX = motionEvent.getRawX(); 
       mInitialY = motionEvent.getRawY(); 
       mInitialLeft = mLayoutParams.leftMargin; 
       mInitialTop = mLayoutParams.topMargin; 
       break; 

      case MotionEvent.ACTION_MOVE: 
       if (mMovingView != null) { 
        mLayoutParams = (RelativeLayout.LayoutParams) mMovingView.getLayoutParams(); 
        mLayoutParams.leftMargin = (int) (mInitialLeft + motionEvent.getRawX() - mInitialX); 
        mLayoutParams.topMargin = (int) (mInitialTop + motionEvent.getRawY() - mInitialY); 
        mMovingView.setLayoutParams(mLayoutParams); 
       } 
       break; 

      case MotionEvent.ACTION_UP: 
       mMovingView = null; 
       break; 
     } 

     return true; 
    } 
} 
+0

感谢您的回答,但我的意思是它像[this](https://github.com/Humoule/DragDropApplication)一样大放异彩。无论如何,我已经做了我需要使用这个[教程](http://www.vogella.com/tutorials/AndroidDragAndDrop/article.html),并且像你说的“一个ImageView不能包含另一个视图里面” – justo

相关问题