1

我正在使用这个 ObservableScrollView 类扩展 ScrollView(版权为 Roman Nurik):

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ScrollView;

 /**
 * A custom ScrollView that can accept a scroll listener.
 */
public class ObservableScrollView extends ScrollView {
    private Callbacks mCallbacks;

    public ObservableScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDrawVerticalScrollBar(Canvas canvas, Drawable scrollBar, int l, int t, int r, int b) {
        this.getOverlay().add(scrollBar);
        super.onDrawVerticalScrollBar(canvas, scrollBar, l, t, r, b);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        if (mCallbacks != null) {
            mCallbacks.onScrollChanged();
        }
    }

    @Override
    public int computeVerticalScrollRange() {
        return super.computeVerticalScrollRange();
    }

    public void setCallbacks(Callbacks listener) {
        mCallbacks = listener;
    }

    public static interface Callbacks {
        public void onScrollChanged();
    }

}

问题是,Android Studio (0.2.2) 说它找不到我想要覆盖的 OnDrawVerticalScrollBar 方法。不过 onScrollChanged 没问题。

在我的清单中: minSdkVersion="7" 和 targetSdkVersion="18" 我在这里检查过,Android 2.1 确实有这个方法......

我知道覆盖的东西只能与 4.3 一起使用,但我稍后会更改它,这只是暂时的。

我只安装了 Java 1.6,我的所有设置都说我使用的是 Java 6。

希望你能帮我..

4

1 回答 1

2

好吧,原来 onDrawVerticalScrollBar 在源文件中被 @Hide 注解了,而 onDrawScrollbars 是最后一个方法。所以这是不可能的。

于 2013-07-29T04:31:41.667 回答