2013-02-01 7 views
5

W mojej aplikacji otrzymałem wymóg stosowania zarówno zdarzeń kliknięcia, jak i przeciągania na tym samym textView.Czy można używać zdarzeń przeciągania i zdarzenia kliknięcia w tym samym widoku tekstowym?

Napisałem następujący kod:

switch(event.getAction()) 
     { 
     case MotionEvent.ACTION_UP: 
//   TextDialog.setVisibility(View.VISIBLE); 
      break; 
     case MotionEvent.ACTION_DOWN: { 
      disallowTouch(parent, true); 
      int downX = (int)event.getX(); 
      int downY = (int)event.getY(); 
      return false; // allow other events like Click to be processed 
     } 


     case MotionEvent.ACTION_MOVE: 
             int x = (int)event.getRawX(); 
             int y= (int)event.getRawY(); 



             layoutParams.leftMargin = x - 50; 
             layoutParams.topMargin = y - 70; 


             tvText.setLayoutParams(layoutParams); 
             break; 


       default: 
             break; 
     } 


     } 
     return true; 
    } 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    TextDialog.setVisibility(View.VISIBLE); 
} 

Ale tylko Action_Move działa, zdarzenie onClick nie jest wyrzucenie.

Po prostu chcę wyświetlić okno dialogowe z kliknięciem na TextView.

Jak mogę to osiągnąć?

Odpowiedz

1

Zastosowanie setOnTouchListener i setOnClickListener jednocześnie

w onTouch:

public boolean onTouch(View v, MotionEvent event) { 
    ViewParent parent = v.getParent(); 
    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: { 
     disallowTouch(parent, true); 
     downX = event.getX(); 
     downY = event.getY(); 
     return false; // allow other events like Click to be processed 
    } 
} 

private void disallowTouch(ViewParent parent, boolean isDisallow) { 
    if (parent != null) { 
     parent.requestDisallowInterceptTouchEvent(isDisallow); 
    } 
} 
+0

zmodyfikowałem mój kod, ale nie działa – user1891910

+0

znajdą edytowanego kodu w moim poście. – user1891910

+1

jak mówi karabara, twoja metoda 'onTouch' powinna zwracać' false'; –

Powiązane problemy