Android - 只拖放垂直

时间:2013-07-22 21:35:23

标签: java android drag

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

我尝试了什么: 创建一个自己的ShadowBuilder,但让他看不见。因此,其他视图会通过OnDragListener调用,但ShadowView不可见。

相反,我会显示一个像这里移动的自己的视图: How to make the TextView drag in LinearLayout smooth, in android?只有在垂直方向上有所不同。问题是,如果激活拖动,则仅调用onTouchListener两次。所以不能动起来。

我认为这个解决方案对我不起作用。 Drag an image only horizontally or vertically in android?

也许有什么想法?谢谢你的阅读。

2 个答案:

答案 0 :(得分:1)

尝试我的解决方案here,但只改变顶部和底部边距。

答案 1 :(得分: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;
            }
        });