2015-09-01 3 views
3

я пытался реализовать липкую ListView заголовка, описанную в учебнике изКогда Элементы список прокручивается быстро, setOnScrollListener не работает

http://javatechig.com/android/listview-header-parallax-with-sticky-view-in-android

Проблема заключается в том, когда я прокручиваю список очень быстро, оленья кожа заголовка перейдите в верхнюю часть экрана по желанию.

Я попытался войти значение Topy и heroTopY следующим способом.

 @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 

      /* Check if the first item is already reached to top.*/ 
      if (view.getFirstVisiblePosition() == 0) { 
       View firstChild = listView.getChildAt(0); 
       topY = 0; 
       if (firstChild != null) { 
        topY = firstChild.getTop(); 
        Log.d("topY", "" + topY); 
       } 

       heroTopY = stickyViewSpacer.getTop(); 
       Log.e("heroTopY", "" + heroTopY); 
       Log.d("topY,heroTopY", topY + "," + heroTopY); 
       stickyView.setY(Math.max(0, heroTopY + topY)); 

       // Set the image to scroll half of the amount that of ListView 
       heroImageView.setY(topY * 0.5f); 
      } 
     } 

Выход журнала:

09-01 17:35:23.692 19530-19530/com.javatechig.parallaxlistview D/topY﹕ 0 
09-01 17:35:23.692 19530-19530/com.javatechig.parallaxlistview E/heroTopY﹕ 500 
09-01 17:35:23.692 19530-19530/com.javatechig.parallaxlistview D/topY,heroTopY﹕ 0,500 
09-01 17:35:23.856 19530-19530/com.javatechig.parallaxlistview D/topY﹕ -29 
09-01 17:35:23.856 19530-19530/com.javatechig.parallaxlistview E/heroTopY﹕ 500 
09-01 17:35:23.856 19530-19530/com.javatechig.parallaxlistview D/topY,heroTopY﹕ -29,500 
09-01 17:35:23.873 19530-19530/com.javatechig.parallaxlistview D/topY﹕ -72 
09-01 17:35:23.873 19530-19530/com.javatechig.parallaxlistview E/heroTopY﹕ 500 
09-01 17:35:23.873 19530-19530/com.javatechig.parallaxlistview D/topY,heroTopY﹕ -72,500 
09-01 17:35:23.892 19530-19530/com.javatechig.parallaxlistview D/topY﹕ -84 
09-01 17:35:23.892 19530-19530/com.javatechig.parallaxlistview E/heroTopY﹕ 500 
09-01 17:35:23.892 19530-19530/com.javatechig.parallaxlistview D/topY,heroTopY﹕ -84,500 

Как видно из вывода журнала значение Topy получить stucked на 84 и так заголовка. enter image description here Как это решить? Любое решение было бы полезно !!!

+0

добавить 'Log.e' в начале' onScroll' – pskink

+0

С 'if (view.getFirstVisiblePosition() == 0) {}', вы перемещаете свой 'stickyView' только тогда, когда вы достигаете вершины, что ты хочешь? – Rami

+0

@Rami, сэр здесь ссылка на видео https://youtu.be/eyWDkwVnYxo. Я хотел получить заголовок ** Heading1 ** придерживаться вершины, так как первый элемент списка просматривает верхнюю часть экрана, его работая нормально, если прокрутка выполняется медленно. Но если прокручивать быстро, просмотр ** Heading1 ** не перемещается наверху! – Nischal

ответ

2

добавить эти строки

if (view.getFirstVisiblePosition() == 0) { 
..... 
..... 
} 
else 
{ 
    stickyView.setY(0); 
} 

Это происходит потому, что, когда первый элемент выходит из поля зрения вы не получаете внутри, если заявление означает Topy не обновляется, так что вы должны установить stickyView.setY() 0 на другой заявление.

+0

Спасибо, что работает !!! – Nischal

+0

@ Нишал принимает ответ, если это вам помогло. –

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

  • Нет связанных вопросов^_^