2014-02-17 76 views
3

這個問題解釋了我想要的一切。如何觸發Horizo​​ntalScrollView的onClickListener?

Horizo​​ntalScrollView似乎是setOnClickListener()不會觸發的唯一窗口小部件。

注意:我不能使用onTouch事件,因爲在每次觸摸時它都是觸發了4-5次。

我也不能在其父母視圖上使用onTouch,因爲父視圖有許多按鈕具有不同的功能。


下面的描述並不重要:

但儘管如此,這些都是我搜索現有的鏈接(沒有幫助):

horizontalscrollview onclicklistener doesn't get called

How to implement on click listener for horizontalscrollview

Click event of HorizontalScrollView

Android click event of items in HorizontalScrollView not respond after scroll

這些都是我張貼的鏈接(沒有得到完全回答):

Insert views in HorizontalScrollView programatically

One of the ImageButton not clicking & make HorizontalScrollView clickable

我問多個問題,在這些環節,其中1個是「的onClickListener爲Horizo​​ntalScrollView「。我的問題的這一部分從未得到回答。

因此,所有的獨家問題。

+0

你能問你的問題?它只是在標題中提出的,我希望看到更多細節,而不必打開多個鏈接。 – Stan

+0

@Stan:這個描述只是沒用......我只是想讓代碼觸發onCilckEvent –

+0

當你點擊滾動視圖中的任何地方,或者當你點擊一個特定的對象/對象時,你是否希望觸發監聽器那scrollView? – Stan

回答

9

我想出了兩種做法。

的簡單(但不太理想)之一:

HorizontalScrollView scrollView = (HorizontalScrollView) findViewById(R.id.scrollView); 

    scrollView.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_UP) { 
       // Do stuff 
      } 
      return false; 
     } 
    }); 

當你點擊,拖動或任何你與你的手指做這將被調用一次。但是,它也會對各種手勢做出反應,所以如果您只想檢測點擊/點擊事件,則需要進一步調查「事件」對象並過濾掉不需要的事件。這可能比你想的更多,所以你最好使用一個手勢檢測器來爲你做。

這導致方法2:

HorizontalScrollView scrollView = (HorizontalScrollView) findViewById(R.id.scrollView); 

    final GestureDetector detector = new GestureDetector(this, new OnGestureListener() { 

     @Override 
     public boolean onSingleTapUp(MotionEvent e) { 
      // Do stuff. 
      return false; 
     } 

     // Note that there are more methods which will appear here 
     // (which you probably don't need). 
    }); 


    scrollView.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      detector.onTouchEvent(event); 
      return false; 
     } 
    }); 
+0

正是我在找什麼。 –

+0

當我使用方法2並導入「GestureDetector」時,整個事物在GestureDetector上以---------行變紅。 GestureDetector不見了? –

相關問題