2013-02-01 50 views
5

在我的應用程序中,我要求在同一個textView上同時使用click和drag事件。是否可以在同一Textview中使用拖動事件並單擊事件?

我寫了下面的代碼:

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

但只有ACTION_MOVE工作,onClick事件不會被解僱。

我只想在點擊TextView時顯示一個對話框。

我該如何做到這一點?

回答

1

使用setOnTouchListener和setOnClickListener同時

在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

我修改了代碼,但它不工作 – user1891910

+0

請找我的後編輯的代碼。按照karabara的說法, – user1891910

+1

,你的'onTouch'方法應該返回'false'; –

相關問題