スクロールの方向を理解するために一日を費やしましたがListView
、解決策が見つかりませんでした。私が達成したいのは、「Google Now」検索のように、下にスクロールすると上に行き、上にスクロールするとすぐに戻る、ListView の可動ヘッダーです。
私がこれまでに試したこと:
カスタム ListView オーバーライドを実装onScrollChanged
しましたが、すべての属性に対して常に 0 を返します。
誰でも私を正しい軌道に乗せることができますか?
スクロールの方向を理解するために一日を費やしましたがListView
、解決策が見つかりませんでした。私が達成したいのは、「Google Now」検索のように、下にスクロールすると上に行き、上にスクロールするとすぐに戻る、ListView の可動ヘッダーです。
私がこれまでに試したこと:
カスタム ListView オーバーライドを実装onScrollChanged
しましたが、すべての属性に対して常に 0 を返します。
誰でも私を正しい軌道に乗せることができますか?
このようなものがうまくいくはずです。古い位置とオフセットをキャッシュし、それを使用して方向を確認するだけです。scrollState でフィルタリングすることもできます。
listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
int position = listView.getFirstVisiblePosition();
View v = listView.getChildAt(0);
int offset = (v == null) ? 0 : v.getTop();
if (mPosition < position || (mPosition == position && mOffset < offset) {
// Scrolled up
} else {
// Scrolled down
}
mPosition = position;
mOffset = offset;
}
});