重写了一个TextView,现在想让它在点击后触发某个操作,长按后触发某个操作

解决方案 »

  1.   

    让自己view实现OnGestureListener接口
    在你的类中组合一个GestureDetector detector = private GestureDetector(this);对象
    重写自己view的onTouchEvent(MotionEvent event)方法在此方法中调用detector.onTouchEvent(event)这个方法
    这样你就可以在onLongPress这个方法中想干嘛就干嘛啦。
      

  2.   

    我无聊写了个玩玩,你看看吧package lon.detector;import android.content.Context;
    import android.util.Log;
    import android.view.GestureDetector;
    import android.view.GestureDetector.OnGestureListener;
    import android.view.MotionEvent;
    import android.widget.TextView;public class MyText extends TextView implements OnGestureListener
    {
        private GestureDetector detector;

    public MyText(Context context)
    {
    super(context);
    detector = new GestureDetector(this);
    } @Override
    public boolean onTouchEvent(MotionEvent event) 
    {
    detector.onTouchEvent(event);
    return super.onTouchEvent(event);
    } public boolean onDown(MotionEvent e)
    {
    Log.e("-----", "---: on Down");
    return false;
    } public void onShowPress(MotionEvent e) 
    {
    Log.e("-----", "---: on ShowPress");

    } public boolean onSingleTapUp(MotionEvent e)
    {
    Log.e("-----", "---: on SingleTapUp");
    return false;
    } public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
    float distanceY) 
    {
    Log.e("-----", "---: on Scroll");
    return false;
    } public void onLongPress(MotionEvent e) 
    {
    Log.e("-----", "---: on Long");
    } public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
    float velocityY) 
    {
    Log.e("-----", "---: on fling");
    return false;
    }}
      

  3.   

    单击的事件是在onDown()里面写吧,但是onLongPress()方法也会先触发onDown()方法啊,应该怎么办啊,还请多多指教
      

  4.   

    onSingleTapUp(MotionEvent e) 这个好像就是单击吧   跟长按区分开了
      

  5.   

      @Override
        public boolean onTouchEvent(MotionEvent event) 
        {
            detector.onTouchEvent(event);
            return super.onTouchEvent(event);
        }将这个函数的返回值改为true,就可以区分单击onSingleTapUp和长按啦onLongPress时间啦。
    文档看了 也不是很清楚    ,lz你自己在弄弄吧,知道什么原因就告诉我,按我的理解是TextView这个类在监听按钮类型事件的时候比不上Button那么强大吧
      

  6.   

    看下button的源代码吧,button继承自textView。懂了吧楼主,仿照button代码修改
      

  7.   

    谢谢,我在onSingleTapUp里实现了,非常感谢
      

  8.   

    你在onSingleTapUp里面写上要实现的部分就行了