2

次のコードで onOverScrolled を呼び出せない理由を誰か教えてください:

   public class KasOverScrollListenableListView extends ListView {

    public interface OverScrollListener{
        void onOverScroll(int scrollx, int scrollY,boolean clampedX, boolean clampedY );
    }
    private OverScrollListener mOverScrollListener= null;
    public KasOverScrollListenableListView(Context context, AttributeSet attrs,
            int defStyle) {
        super(context, attrs, defStyle);
    }

    public KasOverScrollListenableListView(Context context, AttributeSet attrs){
        this(context,attrs,0);
    }

    public KasOverScrollListenableListView(Context context){
        this(context,null,0);
    }

    protected void onOverScroll(int scrollX, int scrollY, boolean clampedX, boolean clampedY){
         Log.i("overScrolling", "overScrolling is " + scrollY);
        // if the version of the system higher than 2.3 then do the following things.
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD){
//          super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
            if(null != mOverScrollListener ){
                mOverScrollListener.onOverScroll(scrollX, scrollY, clampedX, clampedY);
            }
        }

    }

    public void setOnOverScrollListener(OverScrollListener listener){
        mOverScrollListener = listener;
    }
}

ログを出力することはできません。つまり、このリストビューが実際にオーバースクロールしている間、この関数が呼び出されなかったことを意味します。あなたのアイデアを聞いて本当に感謝しています。

4

3 に答える 3

1

これが役立つかどうかはわかりませんが、以下のリンクの例では super.overScrollBy(...) を呼び出しています。このコードを使用して onOverScroll にアクセスできます。それが役に立てば幸い...

OverScroll ListView サンプル コード

于 2013-06-08T09:14:51.513 に答える
0

方法はonOverScrolled、ではありませんonOverScroll

これらのバグ@Overrideは、メソッド シグネチャの上に配置することで検出できます。コンパイラは、メソッドを本当にオーバーライドしているかどうかを知らせます。

于 2015-08-01T17:15:06.717 に答える
0

ただ...誰かが必要なら。Githubで作業サンプルを共有しました。

2.3以降で正常に動作します

于 2014-05-06T06:12:16.333 に答える