如何禁用scrollView的fling

时间:2012-08-29 14:24:14

标签: android android-scrollview

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

任何想法如何禁用fling

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;
    }

}

3 个答案:

答案 0 :(得分:16)

我用Override fling方法解决了同样的问题。如果你在ScrollViewNoFling类上覆盖fling方法而不是在这个方法上调用super.fling,那么你将没有处理滚动的scrollView。

@Override
public void fling (int velocityY)
{
    /*Scroll view is no longer gonna handle scroll velocity.
     * super.fling(velocityY);
    */
}

答案 1 :(得分:0)

我认为它应该是投掷而不是发动机。 请参阅官方documentation

答案 2 :(得分:0)

除了使用fling()代替onFling()外,您还需要注意返回值。

根据onFling()的文档:

  

退货

     

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

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