2015-04-03 2 views
1

У меня есть RelativeLayout с ListView и пользовательский вид. Я устанавливаю размер пользовательского представления как размер ListView программно. Поэтому у меня есть пользовательский вид поверх ListView с одинаковым размером. Очевидно, что ListView не прокручивается, потому что onTouchListener находится в customView. Как я могу выполнить прокрутку одновременно?Прокрутка в то же время, что и ListView прокручивается

+0

Я считаю, что есть атрибут, чтобы сделать вид игнорировать все события касания, не подверженные фокусу? Я не могу вспомнить точное имя, но посмотрите на docs. – Machinarius

+0

return false in * onTouch() * метод, чтобы передать событие в ListView. – Rami

+0

. Я не хочу вмешиваться во все события касания, я хочу сделать оба, listview и мое пользовательское представление прокручиваются одновременно, когда пользователь пытается прокрутить список. – belen

ответ

0

В конце я создал функцию в своем классе пользовательского вида с ListView и количеством строк в качестве параметров. Внутри представления я устанавливаюOnScrollListener в 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); 
      } 

     } 
    }); 


} 
Смежные вопросы