2011-08-10 71 views
1

在我的活動中,我有一個帶有OnTouchListener的ScrollView。 此scrollView包含一些imageViews。onTouch事件問題

問題是,當我觸摸一個imageView時,OnTouchListener的onTouch(view,event)函數被調用,但view參數是scrollView而不是imageView。這是正常的嗎? 我怎樣才能真正觸及的參數?

編輯:

ScrollView scroll = (ScrollView)findViewById(R.id.affichagefiche_scrollview); 
touchListener = new OnTouchScrollListener("---"); 
scroll.setOnTouchListener(touchListener); 
private class OnTouchScrollListener implements OnTouchListener{ 
    public boolean onTouch(View view, MotionEvent event) { 
     Log.d("activity", "onTouch: "+view.toString()); 
    } 
} 

日誌告訴我,在參數視圖始終是滾動​​視圖,而不是一個孩子

+0

你能更新你的代碼嗎 –

回答

0

嘗試綁定OnTouchListener到imageViews或信息getX做到這一點,的getY COORDS

+0

我試圖擴展imageView以擁有自定義的imageView並覆蓋onTouch(event)方法,但scrollViewOnTouchListener總是在之前調用。 實際上,因爲scrollviewOnTouchListener的參數視圖始終是滾動​​視圖而不是子級,所以我遍歷我的imageViews數組以測試是否使用Region.contains(x,y)方法觸摸imageView。但是當我向下滾動時,事件的getX()和get(Y)總是給我屏幕上的x和y,而不是滾動視圖中的真正的x和y:/ – Imotep

0

如果你使用setOnItemClickListener來獲取ScrollView的單獨imageView,那麼它會更容易。然後使用onItemClick(AdapterView parent,View view,int position,long id)。

+0

只有當我在帶有適配器的列表視圖中,這裏不是這種情況 – Imotep

+0

這行說「scroll.setOnTouchListener(touchListener);」你在scrollView中的setOnTouchListener,而不是在child.So,如果你有一定數量的imageView使用onClickLisener,否則使用gridView.you可以使用水平的gridView或垂直的gridView。 – jainal

+0

問題是我需要我的scrollVIew中的onTOuchListener來跟蹤手指的移動。如果我在scrollView上使用ontouchListener,並且在imageViews上使用onClickListener,則該點擊不會由子項處理,也不會由ACTION_DOWN事件處理。 – Imotep