2017-03-21 6 views
0
private TextView tv2; 

tv2=(TextView)findViewById(R.id.textView2); 
tv2.setOnTouchListener(new CustomTouchListener()); 

public class CustomTouchListener implements View.OnTouchListener { 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      switch(motionEvent.getAction()){ 

       case MotionEvent.ACTION_DOWN: 
        Hauteur.setTextSize(TypedValue.COMPLEX_UNIT_PX, 80); 
        Hauteur.startAnimation(AnimationUtils.loadAnimation(recuperationJson.this, android.R.anim.slide_in_left)); 
        break; 

       case MotionEvent.ACTION_UP: 
        // Action you you want on finger up 
        Hauteur.setTextSize(TypedValue.COMPLEX_UNIT_PX, 60); 

        break; 
      } 
      return true; 
     } 
    } 

Hallo! Ich möchte das gleiche Motion Event (gleiche Aktionen) auf 5 anderen Textviews durchführen, also muss ich 5 andere öffentliche Klassen CustomTouchListener1,2,3,4,5 erstellen ... oder gibt es eine Möglichkeit, sie alle zu gruppieren?Touch Listener auf mehrere Textviews?

+0

Vielen Dank an alle, chosed i Mushahid Khatri Lösung – AlexMel

Antwort

0

Sie brauchen keine benutzerdefinierte Touch Listner zu machen.

Sie können es erreichen, indem Sie folgenden Code

private TextView tv2,tv1; 

    tv1=(TextView)findViewById(R.id.textView1); 
    tv1.setOnTouchListener(onTouchListener); 

    tv2=(TextView)findViewById(R.id.textView2); 
    tv2.setOnTouchListener(onTouchListener); 



    View.OnTouchListener onTouchListener = new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 




      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        Hauteur.setTextSize(TypedValue.COMPLEX_UNIT_PX, 80); 
        Hauteur.startAnimation(AnimationUtils.loadAnimation(recuperationJson.this, android.R.anim.slide_in_left)); 

        //Here if you want to know from wich touch this event has accured you can do following code 
        switch (v.getId()){ 
         case R.id.textView1: 
          break; 
         case R.id.textView2: 
          break; 
         case R.id.textView3: 
          break; 
        } 

        break; 
       case MotionEvent.ACTION_UP: 
        // Action you you want on finger up 
        Hauteur.setTextSize(TypedValue.COMPLEX_UNIT_PX, 60); 

        switch (v.getId()){ 
         case R.id.textView1: 
          break; 
         case R.id.textView2: 
          break; 
         case R.id.textView3: 
          break; 
        } 


        break; 
      } 

      return true; 
     } 
    }; 

für Sie Hoffnung zu arbeiten.

+0

Es Danke funktioniert :) – AlexMel

0

Sie können RecycleView oder ListView anstelle von TextView verwenden.

0

Rather Inner-Klasse erstellen, anonyme Klasse erstellen und direkt auf View gesetzt.

private final View.OnTouchListener myTouchListener = new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     return false; 
    } 
} 

Um auf TextView zu setzen.

tv2.setOnTouchListener(myTouchListener) 
0

Versuchen Sie dies! Erstellen Sie eine anonyme Klasse

private final View.OnTouchListener myTouchListener = new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     return false; 
    } 
} 

nun dieses Berührungsereignis auf Ihren gewünschten Textviews

private TextView tv1,tv2.tv3,tv4,tv5; 
tv1=(TextView)findViewById(R.id.textView1); 
tv2=(TextView)findViewById(R.id.textView2); 
tv3=(TextView)findViewById(R.id.textView3); 
tv4=(TextView)findViewById(R.id.textView4); 
tv5=(TextView)findViewById(R.id.textView5); 

Jetzt stellen Sie das Berührungsereignis

tv1.setOnTouchListener(myTouchListener); 
tv2.setOnTouchListener(myTouchListener); 
tv3.setOnTouchListener(myTouchListener); 
tv4.setOnTouchListener(myTouchListener); 
tv5.setOnTouchListener(myTouchListener); 
0

fügen Sie Ihre TextViews zur Liste und übergibt es an setListnerOnTextViews

private function setListnerOnTextViews(List<TextView> tvs){ 
    for(int i =0; i<tvs.size;i++){ 
    if(tvs.get(0) instance of TextView){ 
     tvs.get(0).setOnTouchListener(new CustomTouchListener()); 
    } 
    } 

} 
0

Das gleiche OnTouchListener für mehrere Textview, brauchen Sie nicht eine andere Klasse erstellen

 private TextView tv2, tv3, tv4, tv5; 
     tv2 = (TextView) findViewById(R.id.textView2); 
     tv3 = (TextView) findViewById(R.id.textView3); 
     tv4 = (TextView) findViewById(R.id.textView4); 
     tv5 = (TextView) findViewById(R.id.textView5); 

     View.OnTouchListener listener = new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       return false; 
      } 
     }; 
     tv2.setOnTouchListener(listener); 
     tv3.setOnTouchListener(listener); 
     tv4.setOnTouchListener(listener); 
     tv5.setOnTouchListener(listener);