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();
}