2016-04-03 61 views
1

可能这是一个重复的问题,如果它善意地指引我。使用ontouch事件创建onclick

我有线性布局里面一个TextView和上的LinearLayout我想改变的TextView

的的LinearLayout和文本颜色的背景

Layout not clicked

Layout when clicked

我试图onTouch的行动点击。 Down和Action.Up, ,但它不工作干净。如果用户在ActionDown之后以任何方向轻扫,则除非再次单击,否则其颜色保持更改。

+0

您可以简单地使用'your_liner_layout.setOnClickListener(new View.OnClickListener(){};' – Kathi

回答

1

首先,你需要这样的

private GestureDetector gestureDetector; 

     gestureDetector = new GestureDetector(this, new SingleTapConfirm()); 

一个GestureDetector添加SimpleOnGestureListenerGestureDetector

private class SingleTapConfirm extends GestureDetector.SimpleOnGestureListener { 

     @Override 
     public boolean onSingleTapUp(MotionEvent event) { 
      return true; 
     } 
    } 

现在写一个你OnTouchListener

View.OnTouchListener simpleMethod = new View.OnTouchListener() { 

      if (gestureDetector.onTouchEvent(event)) { 
       // single tap code goes here, its single tap click 
       // its like Onclick for your view 
      } else { 
       // your code for move and drag, touch 
       switch (event.getActionMasked()) { 

        case MotionEvent.ACTION_DOWN: 
        // your action down action 

         break; 

        case MotionEvent.ACTION_MOVE: 
        // your action move code here 
         break; 
        default: 
         return false; 
       } 
       return true; 
      } 

     } 
    }; 

最后利斯特添加触摸到您的视图

fab.setOnTouchListener(simpleMethod);