2017-03-21 70 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; 
     } 
    } 

嗨!我想对其他5个Textview使用相同的动作事件(相同的动作),所以我必须创建另外5个公共类CustomTouchListener1,2,3,4,5 ...或者有一种方法将它们全部组合在一起?触摸多个Textviews的监听器?

+0

感谢大家,我chosed穆沙希德卡特里解决方案 – AlexMel

回答

0

你不需要进行自定义触摸听者。

您可以通过下面的代码

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; 
     } 
    }; 

你希望工作实现它。

+0

它的工作原理谢谢:) – AlexMel

0

您可以使用RecycleView或ListView代替TextView。

0

而是创建内部类,创建匿名类并直接将其放在View

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

设置为TextView

tv2.setOnTouchListener(myTouchListener) 
0

试试这个!创建一个匿名类

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

现在设置这个触摸事件你需要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); 

现在设置的触摸事件

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

添加TextViews到列表,并将其传递给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

同样OnTouchListener几个TextView的,你不需要创建另一个类

 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);