4

スクロールの方向を理解するために一日を費やしましたがListView、解決策が見つかりませんでした。私が達成したいのは、「Google Now」検索のように、下にスクロールすると上に行き、上にスクロールするとすぐに戻る、ListView の可動ヘッダーです。

私がこれまでに試したこと:

カスタム ListView オーバーライドを実装onScrollChangedしましたが、すべての属性に対して常に 0 を返します。

誰でも私を正しい軌道に乗せることができますか?

ここに画像の説明を入力

4

2 に答える 2

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;
    }
});
于 2012-10-26T18:55:34.113 に答える