有两个片段的viewpager.其中一个片段有一个布局,可以在X轴上监听onTouch的变化.
当沿X轴触摸和滑动时,布局几乎不会获得所有Action.Move事件.似乎viewpager有一个返回true的onInterceptTouchEvent.
覆盖viewpager的行为以使它和我的布局协同工作是真的吗?因此,完美的情况是布局拦截其上的所有onTouch事件,viewpager管理其余的onTouch事件.谢谢!
我试图在ViewPager的一个片段中实现47Deg的Swipe ListView开源库.我在简单的Activity中尝试了这个库,它完美无缺.该库的参考如下:
塞纳里奥
正如我所提到的,我想在ViewPager的片段中实现它,但是当我在列表项上滑动时,视图页面会滑开.我想在触摸列表项时擦除列表项,否则擦除片段.
我已经做了什么
我创建了一个自定义类CustomViewPager扩展了ViewPager {}并使用此处提供的解决方案禁用了触摸滑动.我还尝试使用onTouch,Clickable标签以及其他我可以做得最好的东西,因为我是新手.
帮助我解决这个问题.
使用类似于此问题的答案的内容,我尝试在用户在特定项目上滑动时禁用 ViewPager 滑动操作。有问题的视图是来自MPAndroidChart库的可滚动图表,所以自然我不希望视图分页器干扰图表的滚动。
我遇到的问题是,在我想要的视图上调用 onTouchListener 之前,ViewPager 通常会调用“onInterceptTouch”。
在这段代码中,我在按下/未按下视图时进行录制:
private long lastDown;
private long lastUp;
...
public void foo(){
barChart.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
System.out.println("AAA");
if(event.getAction() == MotionEvent.ACTION_DOWN){
lastDown = System.currentTimeMillis();
}else if(event.getAction() == MotionEvent.ACTION_UP){
lastUp = System.currentTimeMillis();
}
return false;
}
});
}
Run Code Online (Sandbox Code Playgroud)
在这段代码中,我确定是否选择了视图:
public boolean isGraphTouched(){
return lastDown > lastUp;
}
Run Code Online (Sandbox Code Playgroud)
在这一段代码中,我覆盖了 onInterceptTouchEvent 方法:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
System.out.println("BBB");
return isGraphSelected() ? super.onInterceptTouchEvent(ev) : false;
}
Run Code Online (Sandbox Code Playgroud)
如果您注意打印行,则 …