2013-07-22 128 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開發人員的答案 –