【问题标题】:how to disable fling of a scrollView如何禁用滚动视图的投掷
【发布时间】:2012-08-29 14:24:14
【问题描述】:

我想禁用滚动视图的投掷手势,但它似乎不起作用。我认为这就像创建一个扩展滚动视图和@OverridingonFling 方法的基本类一样简单。但是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;
    }

}

【问题讨论】:

    标签: android android-scrollview


    【解决方案1】:

    我用 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);
        */
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      【解决方案3】:

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

      根据onFling() 的文档:

      退货

      如果事件被消费则为真,否则为假

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        相关资源
        最近更新 更多