2013-07-04 65 views
0

我有我加入到相對佈局並添加觸摸監聽到 自定義視圖自定義視圖only.The問題的onTouchEvent不called.Plz幫助 示例代碼從我的實際代碼::TouchListener的onTouchEvent不叫

ViewGroup base = (ViewGroup)findViewById(R.id.base); //relative layout 
base.addView(move); 
move.setOnTouchListener(touchListener); 
OnTouchListener touchListener = new OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      Log.d("onTouch v","="+v); 
      if(v instanceof MovingView) { 
       return false; 
      } 
      else 
       return true; 
     } 


    public boolean onTouchEvent(MotionEvent event) { 
     int x = (int)event.getX(); 
      int y = (int)event.getY(); 


} 
};// close listener 
+0

你需要清理你談論的點擊收聽您question-,但是如果使用touchListeners,這是不一樣的。在監聽器中還有一個onTouchEvent函數,它永遠不會被調用,因爲正確的名稱是onTouch,並且需要在那裏完成所有工作。 –

+0

您的代碼不顯示任何嘗試調用onTouchEvent() – eski

+0

您的移動變量中的內容意味着哪個視圖。你使用onClickListener – Unknown

回答

0

首先,您在初始化它之前設置了偵聽器(它是空的)。試試這個:

ViewGroup base = (ViewGroup)findViewById(R.id.base); //relative layout 
base.addView(move); 

OnTouchListener touchListener = new OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      Log.d("onTouch v","="+v); 
      if(v instanceof MovingView) { 
       return false; 
      } 
      else 
       return true; 
     } 


    public boolean onTouchEvent(MotionEvent event) { 
     int x = (int)event.getX(); 
      int y = (int)event.getY(); 


} 
};// close listener 

move.setOnTouchListener(touchListener); 

其次,要注意:「的onTouchEvent()方法被調用時 觸摸屏事件被任何的意見 下沒有處理它」

+0

我試過它沒有工作.onTouchEvent沒有被調用。 – abc

+0

那麼在每個方法之前添加@Override怎麼樣? – Marek

+0

我無法在onTouchEvent上添加@Override。 – abc