2013-07-22 124 views
1

我有一个textView或小图标,我想只拖动它垂直。Android - 拖放只能垂直

我的尝试: 创建自己的ShadowBuilder但让他看不见。所以其他视图通过OnDragListener调用,但是ShadowView不可见。

取而代之,我显示一个自己的视图,它像这里移动: How to make the TextView drag in LinearLayout smooth, in android?与不同,只在垂直方向。问题是,如果拖动被激活,onTouchListener只会被调用两次。所以没有什么可以做的。

这个解决方案对我来说不起作用,我想。 Drag an image only horizontally or vertically in android?

也许什么想法?谢谢阅读。

回答

1

试试我的解决方案here,但只能更改顶部&下边距来代替。

+0

使用您的解决方案其滚动到所有领域。我只想要垂直方向 –

+0

@RajeshNasit因此,只更改垂直边距(顶部和底部),避免更改水平边距(leftMargin&rightMargin) –

+0

谢谢我完成了下面的代码。真的,你救了我的一天:) –

1
findViewById(R.id.btn_submit).setOnTouchListener(new View.OnTouchListener() 
     { 
      int prevX,prevY; 

      @Override 
      public boolean onTouch(final View v,final MotionEvent event) 
      { 
       final LinearLayout.LayoutParams par=(LinearLayout.LayoutParams)v.getLayoutParams(); 
       switch(event.getAction()) 
       { 
        case MotionEvent.ACTION_MOVE: 
        { 
         par.topMargin+=(int)event.getRawY()-prevY; 
         prevY=(int)event.getRawY(); 

         prevX=(int)event.getRawX(); 
         v.setLayoutParams(par); 
         return true; 
        } 
        case MotionEvent.ACTION_UP: 
        { 
         par.topMargin+=(int)event.getRawY()-prevY; 

         v.setLayoutParams(par); 
         return true; 
        } 
        case MotionEvent.ACTION_DOWN: 
        { 
         prevX=(int)event.getRawX(); 
         prevY=(int)event.getRawY(); 
         par.bottomMargin=-2*v.getHeight(); 

         v.setLayoutParams(par); 
         return true; 
        } 
       } 
       return false; 
      } 
     }); 
+0

我已经完成了使用上面的android开发人员的答案 –