Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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_Button_Slide_Drag - Fatal编程技术网

Java Android编程:拖动按钮

Java Android编程:拖动按钮,java,android,button,slide,drag,Java,Android,Button,Slide,Drag,我使用onTouch侦听器来实现一个可拖动的按钮。这是我的密码: final Button b = (Button) rowView.findViewById(R.id.button1); b.setFocusable(false); b.setOnTouchListener(new OnTouchListener() { int k = 0; int prevX; int x = 0; @Override

我使用onTouch侦听器来实现一个可拖动的按钮。这是我的密码:

final Button b = (Button) rowView.findViewById(R.id.button1);
    b.setFocusable(false);
    b.setOnTouchListener(new OnTouchListener() {
        int k = 0; 
        int prevX;
        int x = 0;

        @Override
        public boolean onTouch(final View v, final MotionEvent e) {
            final LinearLayout.LayoutParams par = (LinearLayout.LayoutParams) v.getLayoutParams();

            switch (e.getAction()) {
                case (MotionEvent.ACTION_MOVE):
                    if (k == 0) {
                        prevX = (int) e.getRawX();
                    }

                    x += (int) e.getRawX() - prevX;
                    prevX = (int) e.getRawX();
                    par.leftMargin = x;

                    Log.d("jy", "x: " + x);

                    k++;

                    v.setLayoutParams(par);
                    return true;
                case (MotionEvent.ACTION_UP):
                    b.setText("hi");
                    par.bottomMargin = 0;
                    par.leftMargin = 0;
                    k = 0;
                    x = 0;
                    v.setLayoutParams(par);
                    return true;
            }
            return false;
        }

    });
不过我只能拖动按钮一点点。一旦我拖过按钮的原始位置,onTouchListener就会停止工作


注意:这是自定义列表行单元格内的按钮。我使用的是线性布局。

当您退出控件边界时,它可能会停止接收触摸事件。为什么不改用
OnDragListener
呢?我尝试过使用OnDragListener,但它甚至没有注册初始阻力。您是否遵循了中的所有步骤?