Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ViewPager截取所有x轴onTouch事件。如何禁用? 范围_Android_Ontouchlistener_Android Viewpager - Fatal编程技术网

Android ViewPager截取所有x轴onTouch事件。如何禁用? 范围

Android ViewPager截取所有x轴onTouch事件。如何禁用? 范围,android,ontouchlistener,android-viewpager,Android,Ontouchlistener,Android Viewpager,有一个包含两个片段的viewpager。其中一个片段有一个布局,它监听X轴上的触摸变化 问题 布局并没有得到几乎所有的动作。当触摸并沿X轴滑动时移动事件。 似乎viewpager有一个onInterceptTouchEvent返回true 问题: 覆盖viewpager的行为以使其与我的布局协同工作,这是真的吗?因此,最理想的情况是布局截取它上面的所有onTouch事件,viewpager管理其余的onTouch事件。谢谢 类似的情况(但不使用ViewPager),将其放在需要触摸事件的视图中对

有一个包含两个片段的viewpager。其中一个片段有一个布局,它监听X轴上的触摸变化

问题 布局并没有得到几乎所有的动作。当触摸并沿X轴滑动时移动事件。 似乎viewpager有一个onInterceptTouchEvent返回true

问题: 覆盖viewpager的行为以使其与我的布局协同工作,这是真的吗?因此,最理想的情况是布局截取它上面的所有onTouch事件,viewpager管理其余的onTouch事件。谢谢

类似的情况(但不使用ViewPager),将其放在需要触摸事件的视图中对我有效。如果适用于您的用例,则添加对动作事件以外的动作事件的检查

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_MOVE) {
        this.getParent().requestDisallowInterceptTouchEvent(true);
        return true;
    } else {
        return super.onTouchEvent(event);
    }
}

你是对的,我相信每个滚动容器都会拦截触摸事件,但你可以阻止它。您可以在布局上放置触摸式侦听器:

public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_MOVE: 
        pager.requestDisallowInterceptTouchEvent(true);
        break;
    case MotionEvent.ACTION_UP:
    case MotionEvent.ACTION_CANCEL:
        pager.requestDisallowInterceptTouchEvent(false);
        break;
    }
}

我也有类似的问题

在我的例子中,我在
ViewPager
上设置了一个
OnTouchListener
,但当接收到触摸的孩子设置了
onClick
时,它没有接收触摸事件

我所做的是扩展ViewPager类,并在方法
onInterceptTouchEvent(boolean)
中调用我的click listener,它工作得很好。小心不要截获错误的事件。

中微子是对的

getParent().requestDisallowInterceptTouchEvent(true);
一旦viewpager访问touchEvent截取,其中的子视图就可以获取事件。


我在viewpager中使用FrameLayout来获得抽屉布局效果(我需要它与屏幕高度不匹配,所以我不能使用抽屉布局或导航抽屉)。

这真的很有帮助

谢谢!我应该对android文档更加耐心和小心。这只在onTouch中有效吗?我试过这个,但它仍然在拦截我的触摸。您不必保留对寻呼机的引用-调用
getParent().request…
就足够了,父级将传播请求。它使其在自定义视图中使用更加灵活。2.起初,我认为在启动时为视图调用一次
request…
就足够了。似乎每次触摸事件都必须调用它。这就是为什么你必须这样做
onTouch()
@dev_android当用户在我的图像上水平滑动时,这阻止了选项卡切换。令人惊叹的!如果在浏览侦听onTouch事件的布局时,通过调用寻呼机适配器上的notifyDataSetChanged来更新ViewPager的内容,则它将不再工作!然后,ViewPager将翻转。有人知道这个问题的解决方案吗?这是正确的解决方案,但是我想指出的是,如果不返回true,ViewPager(或任何中间视图组)仍将处理此事件。如果返回false,事件未经处理,将传播回ViewPager。我在片段视图中使用了列表,该视图由ViewPager处理…我也面临相同的问题…如果开始滑动…它开始向x方向轻微移动…我也尝试了@neutrino…但问题仍然是一样的…有任何建议/想法吗?此外,我正在使用中的Listview片段…所以我不得不要求RequestDisallowWinterCeptTouchEvent对列表视图也为true…但现在它很忙…因为它拦截列表事件的单击事件…有任何建议/更新吗?这里也有一些有趣的事情