android listview 禁止滑动

2014-12-02 13:49
一个android下的listview.自带了上下滑动事件,我现在想要的是就算不管数据有多少,也不能让它上下滑动.能实现吗?不能去截取它的onTouch事件,因为我还要item的点击事件呢.

回复讨论(解决方案)

你必须要截获onTouch 事件。 在onTouch事件中记录 Action_Down 和 Action_Up之间 Y坐标的移动距离,如果距离小于一个阀门值,就让父类去handle这个onTouch 事件(处理按下item的动作)。

        final ViewConfiguration configuration = ViewConfiguration.get(mContext);
        mTouchSlop = configuration.getScaledTouchSlop();

上面代码是Android中通用的阀门值,你的阀门值应该就是mTouchSlop 的值。

另外你可以参看AbsListView 的onTouch 函数,它负责整个listview的touch事件控制,很精彩。
你必须要截获onTouch 事件。 在onTouch事件中记录 Action_Down 和 Action_Up之间 Y坐标的移动距离,如果距离小于一个阀门值,就让父类去handle这个onTouch 事件(处理按下item的动作)。

谢谢你,此问题解决了,不过还是截取了onTouch事件,只是对于它的Action_MOVE做了返回,其它的不管.

引用 1 楼  的回复:你必须要截获onTouch 事件。 在onTouch事件中记录 Action_Down 和 Action_Up之间 Y坐标的移动距离,如果距离小于一个阀门值,就让父类去handle这个onTouch 事件(处理按下item的动作)。
谢谢你,此问题解决了,不过还是截取了onTouch事件,只是对于它的Action_MOVE做了返回,其它的不管.
……

感谢提供的思路
我也遇到同样的问题,求指导。。。
我的问题是按照你上面说的处理,那怎么 才能屏蔽listView本身的滑动
如果要左右滑动头部,屏蔽listview的上下滑动呢?
        final ViewConfiguration configuration = ViewConfiguration.get(mContext);
        mTouchSlop = configuration.getScaledTouchSlop();

上面代码是Android中通用的阀门值,你的阀门值应该就是mTouchSlop 的值。

另外你可以参看AbsListView 的onTouch 函数,它负责整个listview的touch事件控制,很精彩。


感谢你的思路