2016-04-03 9 views
1

Vielleicht ist dies eine wiederholte Frage, wenn es mich freundlicherweise darauf hinweist.erstellen onclick mit ontouch event

Ich habe lineares Layout mit einem Textview innen und klicken dieses Linearlayout i

den Hintergrund Linearlayout und Textfarbe von Textview ändern möge

Layout not clicked

Layout when clicked

i OnTouch Aktions versucht. Down und Action.Up, aber es funktioniert nicht sauber. Wenn der Benutzer nach ActionDown in eine beliebige Richtung wischt, bleiben die Farben unverändert, es sei denn, er wird erneut angeklickt.

+0

Sie können einfach 'your_liner_layout.setOnClickListener (new View.OnClickListener() {};' verwenden – Kathi

Antwort

1

Zuerst müssen Sie einen GestureDetector wie diese

private GestureDetector gestureDetector; 

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

hinzufügen SimpleOnGestureListener zu GestureDetector

private class SingleTapConfirm extends GestureDetector.SimpleOnGestureListener { 

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

Jetzt Touch a Ihr 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; 
      } 

     } 
    }; 

Zum Schluss schreiben lister zu Ihrer Ansicht

fab.setOnTouchListener(simpleMethod);