在 android 中,如何获取列表视图的滚动位置?
我知道我可以使用以下代码检索统一填充列表视图的滚动位置:
int scrollY = -this.getChildAt(0).getTop() + this.getFirstVisiblePosition()* this.getChildAt(0).getHeight();
代码假定列表视图中所有子项(项目)的高度都相等(this.getChildAt(0).getHeight()
)
现在,如果我用大小不等的项目填充我的列表视图,我如何获得正确的滚动位置?
我的列表视图看起来像这样:
这就是为什么我需要滚动位置:
private Canvas drawIndicator(Canvas canvas) {
int scrollY = getCurrentScrollPosition();
paint.setColor(Color.GRAY);
paint.setAlpha(100);
canvas.drawRect(getLeft(), indicatorPosition[0] - scrollY, getRight(), indicatorPosition[1]
- scrollY, paint);
//Log.d(VIEW_LOG_TAG, "drawIndicator:" + (indicatorPosition[1] -
//scrollY));
paint.setColor(Color.parseColor("#47B3EA"));
canvas.drawRect(getLeft(), indicatorPosition[1] - scrollY - (indicatorHeight / 2),
getRight(), indicatorPosition[1] - scrollY + indicatorHeight, paint);
return canvas;
}
我需要绘制一个跟随列表视图滚动的指示器
我会像这样调用它
@Override
protected void onDraw(Canvas canvas) {
canvas.save();
canvas = drawIndicator(canvas);
super.onDraw(canvas);
canvas.restore();
}