我现在做了一个ViewFillper,上面有文本框,现在我想手指在文本框上面的文字上面滑动也能实现翻页效果,可是我现在只能在没有文字的地方滑动了来翻页,也就是没有文本框的位置才能做滑动翻页操作。。

解决方案 »

  1.   

    给TextView添加OnTouchListener事件,结合ACTION_DOWN、ACTION_MOVE、ACTION_UP即可达到效果public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) {
    // TODO 触摸时按下
    } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
    // TODO 触摸时移动
    } else if (event.getAction() == MotionEvent.ACTION_UP) {
    // TODO 触摸时抬起
    }
    return false;
    }
      

  2.   

    不知道为什么,照你说的方法做,down时间能响应,但是UP事件总是没响应,我自己做了一个简单的输出程序试了一下也是这样,请问是不是我哪里写错了了
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.widget.TextView;
    import android.widget.Toast;
    public class CheckActivity extends Activity implements OnTouchListener{
        /** Called when the activity is first created. */
    float down,up;
    TextView tv=null;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            tv=(TextView)this.findViewById(R.id.tv);
            tv.setOnTouchListener(this);
            
        }
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    if(v==tv){
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
    down=event.getX();
    Toast.makeText(this, down+"", 1).show();
            } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
            
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                up=event.getX();
                Toast.makeText(this, up+"", 1).show();
            }
    }
    return false;
    }
    }
    我意图是想输出按下的x坐标和释放时的x坐标,因为我想求出滑动的距离出来
      

  3.   

    用不要用Toast输出坐标信息,改用Log的方式输出信息,由于MotionEvent事件是非常频繁的,所以会导致你可能看不到相应的Toast。
      

  4.   

    我用log来输出,也只是看到donw的坐标,up的坐标没看到,我总找不出问题在哪里
    是不是onTouch事件down了之后就结束了
      

  5.   

    懂了,原来是return false;没改成return true;搞了好久,不过还是谢谢大家了