android-如何阻止ExpandableListView窃取儿童触摸事件?

android-如何阻止ExpandableListView窃取儿童触摸事件?,第1张

概述我在ExpandableListView的组视图(节标题)中有一个ViewPager.不出所料,ViewPager的滚动有时会变得不连贯,这很可能是因为ExpandableListView试图拦截触摸事件.作为一种解决方案,我试图阻止ExpandableListView拦截触摸事件(如果该触摸事件用于ViewPager).所以,到目前为止,这就是我所

我在ExpandableListVIEw的组视图(节标题)中有一个VIEwPager.不出所料,VIEwPager的滚动有时会变得不连贯,这很可能是因为ExpandableListVIEw试图拦截触摸事件.作为一种解决方案,我试图阻止ExpandableListVIEw拦截触摸事件(如果该触摸事件用于VIEwPager).所以,到目前为止,这就是我所做的.

private voID fixVIEwPager(VIEwPager vp) {    vp.setontouchListener(new VIEwPager.OntouchListener() {        @OverrIDe        public boolean ontouch(VIEw v, MotionEvent event) {            int action = event.getAction();            switch (action) {            case MotionEvent.ACTION_DOWN:                // disallow ScrollVIEw to intercept touch events.                Logger.log("disabling event stealing");                v.getParent().requestdisallowIntercepttouchEvent(true);                break;            case MotionEvent.ACTION_UP:                // Allow ScrollVIEw to intercept touch events.                Logger.log("Enabling event stealing");                v.getParent().requestdisallowIntercepttouchEvent(false);                break;            }            // Handle ListVIEw touch events.            v.ontouchEvent(event);            return true;        }    });     }

但是,触摸侦听器永远不会获得ACTION_DOWN事件.它似乎只获得ACTION_UP事件.我该怎么解决我的问题?谢谢!

解决方法:

在发布问题后不久,我找到了答案https://stackoverflow.com/a/9770373/1036017.基于此,我将代码更改为以下代码.现在,一旦在VIEwPager中开始水平滚动,VIEwPager就可以防止ExpandableListVIEw窃取触摸事件.

private voID fixVIEwPager(VIEwPager vp) {    vp.setontouchListener(new VIEwPager.OntouchListener() {        @OverrIDe        public boolean ontouch(VIEw vIEw, MotionEvent motionEvent) {            vIEw.getParent().requestdisallowIntercepttouchEvent(true);            switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) {                case MotionEvent.ACTION_UP:                    Logger.log("disabling event stealing.");                    vIEw.getParent().requestdisallowIntercepttouchEvent(false);                    break;            }            return false;        }    });     }
总结

以上是内存溢出为你收集整理的android-如何阻止ExpandableListView窃取儿童触摸事件?全部内容,希望文章能够帮你解决android-如何阻止ExpandableListView窃取儿童触摸事件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1075684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存