2010-03-09 41 views
1

其實我試圖在我的android(1.5)應用程序中實現一個ontouchlistener。 所以我實現了「ontouchlistener」進級,然後我把我的代碼到:touchlisteners和textviews

public boolean onTouchEvent (MotionEvent e){ 
//code 
} 

的問題是,如果我拖了一個多(EG)微調或EditTextView比這個方法ISN」叫。要解決這個,我想通了,唯一的辦法是將ontouchlistener添加到每個手工這種觀點:

((Spinner)(findViewById(R.id.spinner1))).setOnTouchListener(tl); 
((Spinner)(findViewById(R.id.spinner2))).setOnTouchListener(tl); 

(TL是ontouchlistener) 所以不存在之前趕上觸摸事件的方式得到每一個意見? 由於事先

Ripei

回答

0

你想要做的究竟是什麼 - 你想:

  • 檢測整個手勢,在一些 Activity
  • 檢測觸摸只在一定的 View

如果你想前者:

看看這個例子: Fling gesture detection on grid layout

基本上,您將所有註冊的觸摸事件重定向到GestureDetector。 它理解用戶輸入的確切內容(單擊,雙擊,滾動等),並調用您應該實現的SimpleOnGestureListener中的相應回調。

如果你想後者:

您可以:

  1. 覆蓋視圖的onTouchEvent()
  2. 執行和掛鉤onTouchListener(如果你想在觸發它之前得到它)。

如果你想實現onTouchListener,你會做你的工作不是在onTouchEvent()方法,但是在接口的onTouch()方法。

希望有所幫助。

+0

是的,我想要你提到的第一點。但我正在尋找一種方法來解決這個問題,而不必爲我添加到活動中的每個視圖添加一個gesturelistener/onclicklistener。 但似乎這不是可能的。 – Ripei 2010-03-16 08:04:17

+0

不,實際上我提到的第一種方法正是你想要的 - 查看鏈接中的例子。基本上,你將所有觸摸從你的'Activity'重定向到'GestureDetector'。這意味着捕捉並掃描所有未在視圖中處理的觸摸,以便知道用戶是雙擊還是滾動。'SimpleOnGestureListener'被註冊到你的'GestureDetector',它負責整個'Activity'。您不會爲每個「視圖」添加監聽器。 – 2010-03-16 10:08:10