2

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

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

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

我认为该解决方案对我不起作用。 在android中仅水平或垂直拖动图像?

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

4

2 回答 2

1

在这里尝试我的解决方案,但只更改顶部和底部边距。

于 2013-09-14T21:29:44.170 回答
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;
            }
        });
于 2017-05-23T07:02:58.093 回答