Edittext只能垂直移动android

时间:2017-06-16 19:55:10

标签: android

我想知道编辑文本在android中的触摸侦听器上是如何垂直移动的。

这是我的实施。它在我的手指移动时垂直移动但不准确。它是闪烁的,并且在我离开编辑文本视图的位置没有正确定位:

x=event.getX();
            y=event.getY();

            switch (event.getAction())
            {
                case MotionEvent.ACTION_MOVE:
                    /*movabletext.setY(y);*/
                    break;

                case MotionEvent.ACTION_UP:

                    movabletext.setY(y);

                    break;
                case MotionEvent.ACTION_DOWN:
                    movabletext.setY(y);

                    break;

            }


            return true;
        }

感谢。

2 个答案:

答案 0 :(得分:1)

我可能无法准确理解你的问题。但是,如果您希望您的编辑文本只能垂直移动,只需在每次按下时将x设置为常量。

也许是这样的

x=event.getX();
        y=event.getY();

        switch (event.getAction())
        {
            case MotionEvent.ACTION_MOVE:
                /*movabletext.setY(y);*/
                break;

            case MotionEvent.ACTION_UP:
                movabletext.setY(y);
                movabletext.setX(CONSTANT);

                break;
            case MotionEvent.ACTION_DOWN:
                movabletext.setY(y);
                movabletext.setX(CONSTANT);

                break;

        }


        return true;
    }

答案 1 :(得分:0)

                      switch (event.getAction()) {
                            case MotionEvent.ACTION_DOWN: {
                               startClickTime = 
                               Calendar.getInstance().getTimeInMillis();
                                break;
                            }
                            case MotionEvent.ACTION_MOVE: {
                                if (clickDuration > MAX_CLICK_DURATION) 
                                {
                                    if (currX < widthScreen && currY < 
                                    heightScreen) {
                                        ViewGroup.MarginLayoutParams 
                                       marginParams = new 
                                    ViewGroup.MarginLayoutParams
                                    (view.getLayoutParams());
                                        marginParams.setMargins((int) 
                                (currX - mPrevX), (int) (currY - 
                                mPrevY), 0, 0);
                                        RelativeLayout.LayoutParams 
                               layoutParams = new 
                              RelativeLayout.LayoutParams(marginParams);

                              view.setLayoutParams(layoutParams);
                                    }
                                }
                                break;
                            }
                            case MotionEvent.ACTION_UP: {
                            }