я пытался реализовать липкую 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 и так заголовка. Как это решить? Любое решение было бы полезно !!!
добавить 'Log.e' в начале' onScroll' – pskink
С 'if (view.getFirstVisiblePosition() == 0) {}', вы перемещаете свой 'stickyView' только тогда, когда вы достигаете вершины, что ты хочешь? – Rami
@Rami, сэр здесь ссылка на видео https://youtu.be/eyWDkwVnYxo. Я хотел получить заголовок ** Heading1 ** придерживаться вершины, так как первый элемент списка просматривает верхнюю часть экрана, его работая нормально, если прокрутка выполняется медленно. Но если прокручивать быстро, просмотр ** Heading1 ** не перемещается наверху! – Nischal