aaaffaewrerewrwer 2018-06-29 09:17 采纳率: 0%
浏览 1708
已结题

关于禁止listview滑动的问题

我的项目里,想要禁止listview滑动,百度了下,网上有人建议用以下方法,即拦截onTouch中的ACTION_MOVE。程序如下:
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
return true;

                default:
                    break;
            }
            return false;
        }      

但我试了下,手在listview上乱滑的时候,listview偶尔还是会滑动。于是自己猜想,可能拦截的不全,所以又把ACTION_UP和ACTION_DOWN也拦截了,程序变为如下:
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
return true;

                default:
                    break;
            }
            return false;
        }

这下,无论手怎么在listview上来回划, listview也不会滑动了。
问题是貌似解决了,可是不太明白,为什么只拦截ACTION_MOVE不管用呢?我的理解,ACTION_UP和ACTION_DOWN应该只是对屏幕的按下与松开,怎么还会有滑动效果呢?
请老师指教,多谢!

  • 写回答

3条回答 默认 最新

  • aaaffaewrerewrwer 2018-06-29 10:06
    关注

    多谢zhangwulin1207 老师,估计是您所说的场景考虑不全的问题,可我的疑问是应该只有ACTION_MOVE才是负责滑动的,他是核心,没有他,就不应该产生滑动。
    比如说,我手指慢慢在listview上移动(不松开),listview会产生一个慢速滑动的效果,这时候无疑是ACTION_MOVE在负责对吧。
    再比如说,我手指按下(ACTION_DOWN),然后快速移动(ACTION_MOVE),然后再松开(ACTION_UP)。listview会产生一个带惯性的快速滑动的效果,但核心的移动效果的实现还是中间的ACTION_MOVE的那个环节对吧?
    也就是说,我如果把ACTION_MOVE给拦截了,那么不管我是手指慢慢在listview上移动(不松开),还是那种带惯性的手指快速划,都不应该产生滑动效果啊。
    所以想不太明白。。。。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器