我想当用户滚动列表视图1时,列表视图2也像列表视图1一样滚动(完全在像素中)。
我试图通过smoothScrollByOffset(偏移)滚动listview 2,但它滚动的次数超过listview 1.
我不知道为什么?
smoothScrollByOffset(偏移)发生了什么,或者我错过了什么?
进一步资料:
用于滚动listview 2的代码(在listview 1的onScroll回调中):
int previsous = 0;
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
//get current position in pixel of listview 1
View c = lv1.getChildAt(0);
int scrolly = -c.getTop() + lv1.getFirstVisiblePosition() * c.getHeight();
//Difference in pixel with the last scroll
int delta = scrolly - previsous;
Log.d("scroll", "listview 1 has scrolled: " +
scrolly + "| Difference with the last " + delta);
//scroll listview 2 by delta
lv2.smoothScrollByOffset(delta);
previsous = scrolly;
}
诊断的屏幕截图:
答案 0 :(得分:0)
尝试使用smoothScrollToPosition (int position)
代替smoothScrollByOffset (int offset)
,我希望这会对您有所帮助,让我知道发生了什么。
答案 1 :(得分:0)
您使用的是错误的方法。 smoothScrollByOffset()不接受像素,但接受位置数。使用smoothScrollBy(int distance, int duration)