作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我的 ViewPager
中有一个 HorizontalScrollView
。我设置requestDisallowInterceptTouchEvent(true);
用于 HorizontalScrollView
但 ViewPager
有时仍会拦截触摸事件。是否有其他命令可以用来防止 View 的父级和祖先级拦截触摸事件?
注意:HorizontalScrollView
只占屏幕的一半。
最佳答案
我遇到了同样的问题。我的解决方案是:
ViewPager
的子类并添加一个名为childId
的属性。 childId
属性创建一个 setter,并设置 HorizontalScrollView
的 id。ViewPager
的子类中重写 onInterceptTouchEvent()
并且如果 childId
属性大于 0,则获取该子类,如果事件是在 HorizontalScrollView
区域返回 false。代码
public class CustomViewPager extends ViewPager {
private int childId;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (childId > 0) {
View scroll = findViewById(childId);
if (scroll != null) {
Rect rect = new Rect();
scroll.getHitRect(rect);
if (rect.contains((int) event.getX(), (int) event.getY())) {
return false;
}
}
}
return super.onInterceptTouchEvent(event);
}
public void setChildId(int id) {
this.childId = id;
}
}
在onCreate()
方法中
viewPager.setChildId(R.id.horizontalScrollViewId);
adapter = new ViewPagerAdapter(this);
viewPager.setAdapter(adapter);
希望有帮助
关于android: ViewPager 和 HorizontalScrollVIew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6920137/
我是一名优秀的程序员,十分优秀!