2013-02-01 8 views
5

私のアプリケーションでは、同じtextViewでクリックイベントとドラッグイベントの両方を使用する必要があります。同じ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

機能していません。 – user1891910

+1

は、あなたの 'onTouch'メソッドは' false'を返します。 –

関連する問題