2015-11-22 34 views
0

每當設置一個可移動的按鈕,它就變得不可點擊。 我可以移動按鈕,但按鈕點擊調用的功能不起作用。 我已經在xml文件中設置了android:onClick =「playGame」,並且在類中定義了playGame函數。但它不工作。每當設置一個可移動的按鈕,它就變得不可點擊在android

如果我刪除了爲可移動按鈕編寫的代碼,它的工作正常。

用於移動按鈕編寫的代碼是

@Override 
    public boolean onTouch(View view, MotionEvent event) { 
     float currX,currY; 
     int action = event.getAction(); 
     switch (action) { 
      case MotionEvent.ACTION_DOWN: { 
       mPrevX = event.getX(); 
       mPrevY = event.getY(); 
       break; 
      } 
      case MotionEvent.ACTION_MOVE: 
      { 
       currX = event.getRawX(); 
       currY = event.getRawY(); 
       ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(view.getLayoutParams()); 
       marginParams.setMargins((int)(currX - mPrevX), (int)(currY - mPrevY),0, 0); 
       RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams); 
       view.setLayoutParams(layoutParams); 
       break; 
      } 
      case MotionEvent.ACTION_CANCEL: 
       break; 
      case MotionEvent.ACTION_UP: 
       break; 
     } 
     return true; 
    } 

代碼是用於移動按鈕工作正常,但按鈕變得不可點擊。

回答

0

我認爲你應該在區分點擊移動你的onTouchEvent()

@Override 
public boolean onTouch(View view, MotionEvent event) { 

    private static final int MAX_CLICK_DURATION = 200;//!! 
    private long startClickTime; //!! 

    ... 
    switch (action) { 
     case MotionEvent.ACTION_DOWN: { 
      startClickTime = Calendar.getInstance().getTimeInMillis();//!! 

      ... 
     } 
     case MotionEvent.ACTION_MOVE: 
     { 
      ... 
     } 
     case MotionEvent.ACTION_CANCEL: 
      break; 
     case MotionEvent.ACTION_UP: 
      long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime; 
      if(clickDuration < MAX_CLICK_DURATION) { 
       //click event has occurred 
      } 
      break; 
    } 
    return true; 
} 
+0

我不能用'的onClick()'這個事業裏面功能'onCreate'功能,我需要設置按鈕點擊和' onClickListener'事件我需要單獨的'onClick'操作。這會做我的工作嗎? –

+0

不需要onClickListener,只需放入action_up:Log.v(「」,「On Item Clicked ::」);裏面如果(clickDuration ..){here} –

+0

那麼這個代碼不能用於不同的按鈕點擊功能的權利。我正在做的是在基類中編寫這段代碼,並且擴展基類的類可以運行。如果我指定按鈕,請點擊此處然後 (i)button_pressed的xml動畫將不起作用 (ii)我必須對整個代碼進行不同的按鈕點擊。 我猜...如果我沒有錯...... –

相關問題