Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-仅垂直拖放_Java_Android_Drag - Fatal编程技术网

Java Android-仅垂直拖放

Java Android-仅垂直拖放,java,android,drag,Java,Android,Drag,我有一个文本视图或小图标,我只想垂直拖动它 我尝试的是: 创建自己的阴影生成器,但使其不可见。因此,通过OnDragListener调用其他视图,但阴影视图不可见 而是显示自己的视图,移动方式如下: 和之不同,只是在垂直方向。问题是,如果拖动被激活,onTouchListener只被调用两次。因此无法移动 我认为这种解决办法对我不起作用。 也许有什么想法?感谢阅读。尝试我的解决方案,但只更改上下页边距。使用您的解决方案,滚动到所有区域。我只想要垂直的direction@RajeshNasit所

我有一个文本视图或小图标,我只想垂直拖动它

我尝试的是: 创建自己的阴影生成器,但使其不可见。因此,通过OnDragListener调用其他视图,但阴影视图不可见

而是显示自己的视图,移动方式如下: 和之不同,只是在垂直方向。问题是,如果拖动被激活,onTouchListener只被调用两次。因此无法移动

我认为这种解决办法对我不起作用。


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

尝试我的解决方案,但只更改上下页边距。

使用您的解决方案,滚动到所有区域。我只想要垂直的direction@RajeshNasit所以只更改垂直边距(顶部和底部),避免更改水平边距(leftMargin和rightMargin),感谢我看到了下面的代码。真的是你救了我的命:)@RajeshNasit这也是我在答案中写的。
  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;
            }
        });