2015-04-03 193 views
1

我有一個帶有ListView和自定義視圖的RelativeLayout。我以編程方式將自定義視圖的大小設置爲ListView的大小。所以我有兩個相同大小的ListView頂部的自定義視圖。很顯然,ListView不會滾動,因爲onTouchListener位於customView上。我怎樣才能讓兩者同時滾動?ListView滾動的同時滾動視圖

+0

我認爲有一個屬性可以讓視圖忽略所有觸摸事件,不可聚焦?我不記得確切的名字,但看看文檔 – Machinarius 2015-04-03 15:38:19

+0

在* onTouch()*方法返回false,將事件傳遞給ListView – Rami 2015-04-03 15:39:38

+0

我不想ingore所有的觸摸事件,我想使這兩個,當用戶嘗試滾動列表視圖的同時,listview和我的自定義視圖滾動。 – belen 2015-04-03 15:40:58

回答

0

最後,我在ListView和行數作爲參數的自定義視圖類中創建了一個函數。在視圖中,我將setOnScrollListener設置爲ListView,並在滾動到自定義視圖的全局滾動變量時指定ListView的位置。像這樣

public void setListView(final TwoWayView listView, int totalListRows) { 
    totalColumns = totalListRows; 
    for (int i = 0; i < totalColumns; i++) { 
     listViewItemHeights.put(i, (int) getResources().getDimension(R.dimen.column_width)); 
    } 
    listView.setOnScrollListener(new TwoWayView.OnScrollListener() { 

     @Override 
     public void onScrollStateChanged(TwoWayView view, int scrollState) { 

     } 

     @Override 
     public void onScroll(TwoWayView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 
      c = listView.getChildAt(0); 
      if (c != null) { 
       int oldScrollX = scrollX; 
       scrollX = -c.getLeft(); 


       for (int i = 0; i < listView.getFirstVisiblePosition(); ++i) { 
        if (listViewItemHeights.get(i) != null) { 
         scrollX += listViewItemHeights.get(i); 
        } 

       } 
       scrollBy(scrollX - oldScrollX, 0); 
      } 

     } 
    }); 


}