6

我想禁用滚动视图的投掷手势,但它似乎不起作用。我认为这就像创建一个扩展滚动视图和 @ 方法的基本类一样Overriding 简单onFling。但是eclipse给了我一个删除@Override的错误:

任何想法如何禁用投掷

public class ScrollViewNoFling extends ScrollView {

    /**
     * @param context
     * @param attrs
     * @param defStyle
     */
    public ScrollViewNoFling(Context context) {

        super(context);
        // TODO Auto-generated constructor stub
    }
    public ScrollViewNoFling(Context context, AttributeSet attrs) {

        super(context, attrs);
        // TODO Auto-generated constructor stub
    }
    public ScrollViewNoFling(Context context, AttributeSet attrs, int defStyle) {

        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

   @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
    {
        return false;
    }

}
4

3 回答 3

17

我用 Override fling 方法解决了同样的问题。如果你在你的 ScrollViewNoFling 类上重写了 fling 方法,而不是在这个方法上调用 super.fling,你将拥有 not-fling-handled scrollView。

@Override
public void fling (int velocityY)
{
    /*Scroll view is no longer gonna handle scroll velocity.
     * super.fling(velocityY);
    */
}
于 2012-10-10T11:20:51.013 回答
0

除了使用fling()而不是onFling(),您还需要注意您的返回值。

根据onFling()的文档:

退货

如果事件被消费,则为 true,否则为 false

如果您想捕捉事件并且什么都不做,请返回 true。否则,该事件将被传递给其他方法/类以尝试处理它。

于 2012-08-29T14:33:45.993 回答
0

我认为应该是 fling 而不是 onFling。请参考官方文档

于 2012-08-29T14:27:15.023 回答